Chúng tôi rất vui thông báo việc phát hành GroupDocs.Parser for Python v26.10, có sẵn từ tháng 11 năm 2026. Bản phát hành này nâng cấp engine nền tảng lên phiên bản 26.8 và chuyển từ .NET Core 3.1 sang .NET 10.0.14, khắc phục hai lỗ hổng từ chối dịch vụ trong System.Security.Cryptography.Pkcs. Nó giới thiệu các tính năng mới lớn bao gồm trích xuất chú thích, phân tích bảng HTML, OCR cho tiếng Ả Rập và Hàn Quốc, một logger Python, xử lý tài nguyên bên ngoài, callback preview dưới dạng hàm thông thường, và công cụ dòng lệnh groupdocs-parser. Gói wheel hiện là một package thuần Python nhắm tới Python 3.5 – 3.14, với các thẻ nền tảng đã cập nhật (manylinux_2_27_x86_64, macosx_13_0_*) và loại bỏ wheel Windows 32-bit.
Những gì mới trong bản phát hành này
- [Feature] Thêm hỗ trợ trích xuất chú thích với
get_annotations()vàTextOptions.include_annotations(PARSERPYTHONNET-23) - [Feature] Thêm công cụ dòng lệnh
groupdocs-parser(PARSERPYTHONNET-24) - [Feature] Thêm hỗ trợ cho một đối tượng logger Python thực hiện giao diện
ILogger(PARSERPYTHONNET-25) - [Feature] Thêm hỗ trợ xử lý việc tải tài nguyên bên ngoài từ Python (PARSERPYTHONNET-26)
- [Feature] Thêm OCR cho văn bản tiếng Ả Rập và Hàn Quốc (PARSERPYTHONNET-27)
- [Feature] Thêm hỗ trợ trích xuất bảng từ tài liệu HTML (PARSERPYTHONNET-28)
- [Feature] Thêm hỗ trợ áp dụng giấy phép từ biến môi trường
GROUPDOCS_LIC_PATH(PARSERPYTHONNET-36) - [Enhancement] Cập nhật GroupDocs.Parser lên 26.8 và runtime nhúng lên .NET 10.0.14 (PARSERPYTHONNET-29)
- [Enhancement] Phát hành một package thuần Python cho Python 3.5 – 3.14 thay vì phần mở rộng biên dịch (PARSERPYTHONNET-30)
- [Enhancement] Truyền callback preview tới
PreviewOptionsdưới dạng hàm Python thông thường (PARSERPYTHONNET-31) - [Enhancement] Từ chối gán cho các thuộc tính không xác định của các đối tượng API (PARSERPYTHONNET-32)
- [Enhancement] Cập nhật các thẻ nền tảng lên glibc 2.27 và macOS 13, và loại bỏ wheel Windows 32-bit (PARSERPYTHONNET-33)
- [Enhancement] Ném
GroupDocsParserExceptionvà các lớp con của nó thay vìRuntimeError(PARSERPYTHONNET-34) - [Enhancement] Cập nhật
System.Security.Cryptography.Pkcslên 10.0.14, khắc phục hai lỗ hổng từ chối dịch vụ (PARSERPYTHONNET-37) - [Fix] Một số tài liệu Word và RTF gặp lỗi
The document appears to be corruptedhoặc thiếu assemblySkiaSharp3.119 (PARSERPYTHONNET-35) - [Fix] Bộ nhớ tăng lên mỗi khi mở một tài liệu từ
BytesIO(PARSERPYTHONNET-38)
Các thay đổi API công cộng
- Các lỗi engine ném
GroupDocsParserException,InvalidPasswordException,CorruptedDocumentExceptionhoặcUnsupportedDocumentFormatExceptiontừgroupdocs.parser.exceptions, trong khi phiên bản 25.12 némRuntimeErrorcho tất cả chúng. Các lớp này đã tồn tại trong 25.12, nhưng chúng không kế thừa từExceptionvà chưa bao giờ được ném.except Exceptionsẽ bắt các lỗi của cả hai phiên bản. - Gán một thuộc tính không xác định sẽ ném
AttributeError. - Các danh sách mà engine trả về hỗ trợ
len()và truy cập theo chỉ mục, và một danh sách rỗng sẽ được coi là false.
Đã loại bỏ
groupdocs.parser.options.ICreatePageStreamgroupdocs.parser.options.IReleasePageStreamgroupdocs.parser.options.IPreviewPageRender
Hãy truyền các hàm vào PreviewOptions và PreviewOptions.preview_page_render thay thế.
Các lớp và thành viên mới
groupdocs.parser:Resources.groupdocs.parser.data:AnnotationItem.groupdocs.parser.options:CreatePageStream,ReleasePageStream,PreviewPageRender,Language,PreviewFormats.Parser:get_annotations(),get_structure(),dispose().Features:annotations.TextOptions:include_annotations.OcrOptions:language.ILogger:error().TocItem:extract_text().PageTableArea:get()vàtable[row, column].DocumentData,Template:get().TemplateCollection:append().Resources:storage_path, writable.
Các tính năng mới
Trích xuất chú thích
Parser.get_annotations() trả về các bình luận và ghi chú của tài liệu PDF, Word hoặc PowerPoint dưới dạng các đối tượng AnnotationItem với giá trị, loại, chỉ số trang, thời gian, tên tác giả và chữ viết tắt; get_annotations(page_index) đọc một trang. TextOptions.include_annotations thêm văn bản chú thích vào văn bản đã trích xuất, và parser.features.annotations cho biết định dạng có hỗ trợ chú thích hay không.
from groupdocs.parser import Parser
from groupdocs.parser.options import TextOptions
with Parser("reviewed.docx") as parser:
for note in parser.get_annotations() or []:
print(note.page_index + 1, note.annotation_type, note.author_name, note.value.strip())
options = TextOptions()
options.include_annotations = True
print(parser.get_text(options))
Dòng lệnh
Wheel cài đặt script console groupdocs-parser (cũng có thể gọi python -m groupdocs.parser) với các lệnh text, info, metadata, images, annotations và list-formats. text nhận --page N (đánh số từ 1), --format plain|markdown|html, --ocr, --include-annotations và -o FILE; info, metadata và annotations nhận --json; images nhận --out DIR; mọi lệnh đều nhận --password. --license và --version đặt trước lệnh. Mã thoát là 0 khi thành công, 2 cho lỗi người dùng như thiếu file, và 1 cho lỗi engine hoặc định dạng không hỗ trợ thao tác.
groupdocs-parser text report.pdf --page 2 -o page2.txt
groupdocs-parser text report.docx --format markdown
groupdocs-parser info report.pdf --json
groupdocs-parser annotations reviewed.docx --json
groupdocs-parser --license license.lic text protected.pdf --password secret
Logger Python
Một đối tượng Python thuần với các phương thức trace(message), warning(message) và error(message, exception) có thể được truyền vào ParserSettings làm logger, và engine sẽ gọi nó khi gặp các sự kiện trong quá trình trích xuất, chẳng hạn như file bị hỏng. Một hàm log(level, message, exception) cũng hoạt động được.
from groupdocs.parser import Parser
from groupdocs.parser.options import ParserSettings
class PrintLogger:
def trace(self, message):
print("TRACE:", message)
def warning(self, message):
print("WARNING:", message)
def error(self, message, exception):
print("ERROR:", message, exception)
with Parser("document.pdf", ParserSettings(PrintLogger())) as parser:
print(parser.get_document_info().page_count)
Kiểm soát việc tải tài nguyên bên ngoài
Engine sẽ hỏi một handler tài nguyên bên ngoài trước khi tải mỗi hình ảnh mà tài liệu HTML hoặc MHTML tham chiếu. Handler có thể là một hàm, một đối tượng có phương thức on_loading(args), hoặc một lớp con của ExternalResourceHandler; đặt args.skipped = True sẽ bỏ qua tài nguyên. ParserSettings nhận nó dưới dạng external_resource_handler.
from groupdocs.parser import Parser
from groupdocs.parser.options import ParserSettings
def skip_remote(args):
args.skipped = args.uri.startswith("http")
with Parser("page.html", ParserSettings(external_resource_handler=skip_remote)) as parser:
print(len(parser.get_images() or []))
OCR cho tiếng Ả Rập và Hàn Quốc
OcrOptions.language chọn bảng chữ cái mà OCR sẽ nhận dạng, mặc định là tiếng Anh. Language.ARA và Language.KOR là các giá trị mới trong engine này. Các mô hình nhận dạng là một phần của engine: lần gọi OCR đầu tiên sẽ giải nén chúng (khoảng 80 MB) vào thư mục aspose_data trong thư mục làm việc, không cần tải xuống. Để chọn thư mục, đặt Resources.storage_path (from groupdocs.parser import Resources) trước lần gọi OCR đầu tiên.
from groupdocs.parser import Parser
from groupdocs.parser.options import Language, OcrOptions, TextOptions
ocr_options = OcrOptions()
ocr_options.language = Language.KOR
with Parser("scan.jpg") as parser:
print(parser.get_text(TextOptions(False, True, ocr_options)))
Bảng từ tài liệu HTML
get_tables() giờ tìm thấy các bảng trong tài liệu HTML, giống như với PDF, Word và bảng tính; phiên bản 25.12 không tìm thấy gì. Một ô được truy cập bằng table[row, column], hoặc table.get(row, column).
from groupdocs.parser import Parser
with Parser("report.html") as parser:
for table in parser.get_tables() or []:
for row in range(table.row_count):
print([table[row, column].text.rstrip("\x07") for column in range(table.column_count)])
Giấy phép từ môi trường
Đặt GROUPDOCS_LIC_PATH thành đường dẫn tới file giấy phép, hoặc một URL cung cấp file giấy phép, và giấy phép sẽ được áp dụng ở lần gọi Parser đầu tiên, không cần mã giấy phép; phiên bản 25.12 không đọc biến này. Nếu giấy phép không thể áp dụng (file thiếu, giấy phép đã hết hạn, hoặc giấy phép cho sản phẩm khác), mọi lần gọi Parser sẽ ném LicenseError, chỉ ra biến và lý do của engine, cho đến khi License().set_license() áp dụng một giấy phép. Đặt GROUPDOCS_LIC_STRICT=0 để nhận một LicenseWarning và chế độ đánh giá thay thế.
from groupdocs.parser import LicenseError, Parser
try:
with Parser("report.pdf") as parser:
print(parser.get_text())
except LicenseError as e:
print(e) # GROUPDOCS_LIC_PATH=... could not be applied: <reason>
Callback preview dưới dạng hàm thông thường
PreviewOptions(create_page_stream, release_page_stream) nhận các hàm thông thường, và PreviewOptions.preview_page_render cũng vậy. create_page_stream(page_number) trả về một stream có thể ghi, chẳng hạn như một file mở bằng "wb" hoặc một io.BytesIO; các trang được đánh số từ 1. Engine sẽ đóng file được truyền vào, và gọi release_page_stream(page_number) sau khi trang được ghi. Trong 25.12, các lớp ICreatePageStream, IReleasePageStream và IPreviewPageRender được sử dụng.
from groupdocs.parser import Parser
from groupdocs.parser.options import PreviewOptions
def create_page_stream(page_number):
return open("page-%d.png" % page_number, "wb")
def release_page_stream(page_number):
print("page", page_number, "written")
options = PreviewOptions(create_page_stream, release_page_stream)
options.preview_page_render = lambda info: print("rendering page", info.page_number)
with Parser("document.pdf") as parser:
parser.generate_preview(options)
Các thuộc tính sai chính tả ném AttributeError
Gán một thuộc tính mà đối tượng API không có sẽ ném AttributeError kèm gợi ý “Did you mean”. Phiên bản 25.12 chấp nhận việc gán, lưu thuộc tính chỉ trong Python và không thay đổi cài đặt engine.
from groupdocs.parser.options import TextOptions
options = TextOptions()
try:
options.include_annotation = True
except AttributeError as error:
print(error)
Một wheel cho Python 3.5 – 3.14
Phiên bản 25.12 là một phần mở rộng biên dịch, với một module nhị phân cho mỗi phiên bản Python và runtime .NET Core 3.1. Phiên bản 26.10 là một wheel py3-none-<platform> duy nhất cho mỗi nền tảng, thuần Python chạy trên runtime .NET 10 được nhúng, và khai báo python_requires=">=3.5,<3.15". Python 3.14 là mới: 25.12 chỉ hỗ trợ <3.14. Hầu hết mã 25.12 chạy không thay đổi, và tất cả 129 ví dụ Docs chạy trên 25.12 cũng chạy trên 26.10. get_text() và get_formatted_text() vẫn trả về một str, hiện cũng hỗ trợ read_to_end().
Cập nhật thẻ nền tảng và wheel Windows 64-bit
Wheel Linux được gắn thẻ manylinux_2_27_x86_64, là glibc cũ nhất mà runtime .NET 10 nhúng hỗ trợ, và các wheel macOS là macosx_13_0_x86_64 và macosx_13_0_arm64. Không còn wheel Windows 32-bit nữa. Cài đặt yêu cầu pip 20.3 trở lên.
Ví dụ mã
Trích xuất chú thích từ tài liệu Word và bao gồm chúng trong văn bản đã trích xuất:
from groupdocs.parser import Parser
from groupdocs.parser.options import TextOptions
with Parser("reviewed.docx") as parser:
for note in parser.get_annotations() or []:
print(note.page_index + 1, note.annotation_type, note.author_name, note.value.strip())
options = TextOptions()
options.include_annotations = True
print(parser.get_text(options))
Cách nhận bản cập nhật
PyPI
Cài đặt hoặc nâng cấp qua PyPI:
groupdocs-parser-net 26.10.0 trên PyPI
pip install groupdocs-parser-net==26.10.0
Tải trực tiếp
Tải các wheel theo nền tảng từ trang phát hành GroupDocs.Parser for Python via .NET 26.10: