เรามีความยินดีที่จะแจ้งการเปิดตัว GroupDocs.Parser for Python v26.10 ซึ่งพร้อมให้ใช้งานตั้งแต่ พฤศจิกายน 2026 รุ่นนี้อัปเกรดเอนจินพื้นฐานเป็นเวอร์ชัน 26.8 และย้ายจาก .NET Core 3.1 ไปเป็น .NET 10.0.14 พร้อมแก้ไขช่องโหว่การปฏิเสธการให้บริการสองช่องใน System.Security.Cryptography.Pkcs นอกจากนี้ยังนำคุณลักษณะใหม่สำคัญเข้ามา ได้แก่ การสกัดข้อมูล annotation, การแยกตาราง HTML, OCR สำหรับภาษาอาหรับและเกาหลี, ตัวบันทึก Python, การจัดการทรัพยากรภายนอก, คอลแบ็กการพรีวิวเป็นฟังก์ชันธรรมดา, และเครื่องมือบรรทัดคำสั่ง groupdocs-parser แพ็กเกจ wheel ตอนนี้เป็นแพ็กเกจ pure‑Python ที่รองรับ Python 3.5 – 3.14 พร้อมแท็กแพลตฟอร์มที่อัปเดต (manylinux_2_27_x86_64, macosx_13_0_*) และลบ wheel Windows 32‑bit ออกไปแล้ว
สิ่งใหม่ในรุ่นนี้
- [Feature] เพิ่มการสนับสนุนการสกัด annotation ด้วย
get_annotations()และTextOptions.include_annotations(PARSERPYTHONNET-23) - [Feature] เพิ่มเครื่องมือบรรทัดคำสั่ง
groupdocs-parser(PARSERPYTHONNET-24) - [Feature] เพิ่มการสนับสนุนอ็อบเจ็กต์บันทึก Python ที่ทำตาม
ILogger(PARSERPYTHONNET-25) - [Feature] เพิ่มการสนับสนุนการจัดการการโหลดทรัพยากรภายนอกจาก Python (PARSERPYTHONNET-26)
- [Feature] เพิ่ม OCR สำหรับข้อความภาษาอาหรับและเกาหลี (PARSERPYTHONNET-27)
- [Feature] เพิ่มการสนับสนุนการสกัดตารางจากเอกสาร HTML (PARSERPYTHONNET-28)
- [Feature] เพิ่มการสนับสนุนการใช้ไลเซนส์จากตัวแปรสภาพแวดล้อม
GROUPDOCS_LIC_PATH(PARSERPYTHONNET-36) - [Enhancement] อัปเดต GroupDocs.Parser เป็นเวอร์ชัน 26.8 และรันไทม์ที่ฝังอยู่เป็น .NET 10.0.14 (PARSERPYTHONNET-29)
- [Enhancement] ปล่อยแพ็กเกจ pure‑Python สำหรับ Python 3.5 – 3.14 แทนส่วนขยายที่คอมไพล์ (PARSERPYTHONNET-30)
- [Enhancement] ส่งคอลแบ็กพรีวิวไปยัง
PreviewOptionsเป็นฟังก์ชัน Python ธรรมดา (PARSERPYTHONNET-31) - [Enhancement] ปฏิเสธการกำหนดค่าให้กับแอตทริบิวต์ที่ไม่รู้จักของอ็อบเจ็กต์ API (PARSERPYTHONNET-32)
- [Enhancement] อัปเดตแท็กแพลตฟอร์มเป็น glibc 2.27 และ macOS 13 และลบ wheel Windows 32‑bit (PARSERPYTHONNET-33)
- [Enhancement] ยก
GroupDocsParserExceptionและคลาสย่อยของมันแทนRuntimeError(PARSERPYTHONNET-34) - [Enhancement] อัปเดต
System.Security.Cryptography.Pkcsเป็นเวอร์ชัน 10.0.14 ซึ่งแก้ไขช่องโหว่การปฏิเสธการให้บริการสองช่อง (PARSERPYTHONNET-37) - [Fix] เอกสาร Word และ RTF บางไฟล์ล้มเหลวพร้อมข้อความ
The document appears to be corruptedหรือขาดแอสเซมบลีSkiaSharp3.119 (PARSERPYTHONNET-35) - [Fix] หน่วยความจำเพิ่มขึ้นทุกครั้งที่เปิดเอกสารจาก
BytesIO(PARSERPYTHONNET-38)
การเปลี่ยนแปลง Public API
- ข้อผิดพลาดของเอนจินจะยก
GroupDocsParserException,InvalidPasswordException,CorruptedDocumentExceptionหรือUnsupportedDocumentFormatExceptionจากgroupdocs.parser.exceptionsซึ่งในรุ่น 25.12 จะยกRuntimeErrorสำหรับทั้งหมด คลาสเหล่านี้มีอยู่ในรุ่น 25.12 แต่ไม่ได้สืบทอดจากExceptionและไม่เคยถูกยกexcept Exceptionจะจับข้อผิดพลาดของทั้งสองรุ่นได้ - การกำหนดค่าแอตทริบิวต์ที่ไม่รู้จักจะยก
AttributeError - รายการที่เอนจินคืนค่าจะรองรับ
len()และการเข้าถึงด้วยดัชนี และรายการว่างจะให้ค่าเป็นFalse
ถูกลบ
groupdocs.parser.options.ICreatePageStreamgroupdocs.parser.options.IReleasePageStreamgroupdocs.parser.options.IPreviewPageRender
ให้ส่งฟังก์ชันไปยัง PreviewOptions และ PreviewOptions.preview_page_render แทน
คลาสและสมาชิกใหม่
groupdocs.parser:Resourcesgroupdocs.parser.data:AnnotationItemgroupdocs.parser.options:CreatePageStream,ReleasePageStream,PreviewPageRender,Language,PreviewFormatsParser:get_annotations(),get_structure(),dispose()Features:annotationsTextOptions:include_annotationsOcrOptions:languageILogger:error()TocItem:extract_text()PageTableArea:get()และtable[row, column]DocumentData,Template:get()TemplateCollection:append()Resources:storage_path, writable
คุณลักษณะใหม่
สกัด annotation
Parser.get_annotations() จะคืนคอมเมนต์และโน้ตของไฟล์ PDF, Word หรือ PowerPoint เป็นอ็อบเจ็กต์ AnnotationItem ที่มีค่า, ประเภท, ดัชนีหน้า, เวลา, ชื่อผู้เขียนและอักษรย่อ; get_annotations(page_index) จะอ่านเฉพาะหน้าหนึ่ง TextOptions.include_annotations จะเพิ่มข้อความ annotation ลงในข้อความที่สกัด, และ parser.features.annotations จะบอกว่าไฟล์ฟอร์แมตใดรองรับ annotation
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))
บรรทัดคำสั่ง
wheel จะติดตั้งสคริปต์คอนโซล groupdocs-parser (หรือ python -m groupdocs.parser) พร้อมคำสั่ง text, info, metadata, images, annotations และ list-formats text รองรับ --page N (นับจาก 1), --format plain|markdown|html, --ocr, --include-annotations และ -o FILE; info, metadata และ annotations รองรับ --json; images รองรับ --out DIR; ทุกคำสั่งรองรับ --password. --license และ --version จะต้องใส่ก่อนคำสั่ง รหัสออกจะเป็น 0 เมื่อสำเร็จ, 2 สำหรับข้อผิดพลาดของผู้ใช้เช่นไฟล์หาย, และ 1 สำหรับข้อผิดพลาดของเอนจินหรือฟอร์แมตที่ไม่รองรับการทำงานนั้น
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
ตัวบันทึก Python
อ็อบเจ็กต์ Python ธรรมดาที่มีเมธอด trace(message), warning(message) และ error(message, exception) สามารถส่งให้กับ ParserSettings เป็นตัวบันทึกได้ และเอนจินจะเรียกใช้เมธอดเหล่านี้เมื่อพบเหตุการณ์ระหว่างการสกัด เช่น ไฟล์เสียหาย ฟังก์ชัน log(level, message, exception) ก็ทำงานได้เช่นกัน
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)
ควบคุมการโหลดทรัพยากรภายนอก
เอนจินจะเรียกตัวจัดการทรัพยากรภายนอกก่อนโหลดรูปภาพแต่ละรูปที่เอกสาร HTML หรือ MHTML อ้างอิง ตัวจัดการอาจเป็นฟังก์ชัน, อ็อบเจ็กต์ที่มีเมธอด on_loading(args), หรือคลาสย่อยของ ExternalResourceHandler; การตั้งค่า args.skipped = True จะข้ามทรัพยากรนั้น ParserSettings รับพารามิเตอร์นี้เป็น 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 สำหรับภาษาอาหรับและเกาหลี
OcrOptions.language กำหนดอักษรที่ OCR จะรับรู้, ค่าเริ่มต้นคืออังกฤษ Language.ARA และ Language.KOR เป็นค่าใหม่ในเอนจินนี้ โมเดลการจดจำเป็นส่วนหนึ่งของเอนจิน: การเรียก OCR ครั้งแรกจะแตกไฟล์โมเดลประมาณ 80 MB ไปยังโฟลเดอร์ aspose_data ในไดเรกทอรีทำงานโดยไม่ต้องดาวน์โหลด หากต้องการกำหนดโฟลเดอร์ให้ตั้งค่า Resources.storage_path (from groupdocs.parser import Resources) ก่อนการเรียก OCR ครั้งแรก
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)))
ตารางจากเอกสาร HTML
get_tables() ตอนนี้สามารถค้นหาตารางในเอกสาร HTML ได้เช่นเดียวกับ PDF, Word และสเปรดชีต; รุ่น 25.12 ไม่พบตารางเลย เซลล์เข้าถึงได้ด้วย table[row, column] หรือ 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)])
ไลเซนส์จากสภาพแวดล้อม
ตั้งค่า GROUPDOCS_LIC_PATH ให้เป็นพาธของไฟล์ไลเซนส์หรือ URL ที่ให้บริการไฟล์ไลเซนส์ และไลเซนส์จะถูกนำไปใช้ในการเรียก Parser ครั้งแรกโดยไม่ต้องระบุโค้ดไลเซนส์; รุ่น 25.12 ไม่ได้อ่านตัวแปรนี้ หากไลเซนส์ไม่สามารถนำไปใช้ได้ (ไฟล์หาย, การสมัครหมดอายุ, หรือไลเซนส์ของผลิตภัณฑ์อื่น) ทุกการเรียก Parser จะยก LicenseError พร้อมระบุตัวแปรและเหตุผลของเอนจิน จนกว่าจะเรียก License().set_license() เพื่อนำไลเซนส์มาใช้ ตั้งค่า GROUPDOCS_LIC_STRICT=0 เพื่อให้ได้ LicenseWarning หนึ่งรายการและโหมดประเมินผลแทน
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>
คอลแบ็กพรีวิวเป็นฟังก์ชันธรรมดา
PreviewOptions(create_page_stream, release_page_stream) รับฟังก์ชันธรรมดาได้เช่นกัน, PreviewOptions.preview_page_render ก็เช่นกัน create_page_stream(page_number) คืนสตรีมที่เขียนได้ เช่น ไฟล์ที่เปิดด้วย "wb" หรือ io.BytesIO; หน้าถูกนับจาก 1 เอนจินจะปิดไฟล์ที่ได้รับและเรียก release_page_stream(page_number) หลังจากเขียนหน้าเสร็จ ในรุ่น 25.12 สิ่งเหล่านี้เป็นคลาส ICreatePageStream, IReleasePageStream และ IPreviewPageRender
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)
แอตทริบิวต์ที่สะกดผิดจะยก AttributeError
การกำหนดค่าให้กับพร็อพเพอร์ตี้ที่อ็อบเจ็กต์ API ไม่มีจะยก AttributeError พร้อมข้อความแนะนำ “Did you mean”. รุ่น 25.12 ยอมรับการกำหนดค่า, เก็บเป็นแอตทริบิวต์เฉพาะ Python และไม่เปลี่ยนการตั้งค่าในเอนจิน
from groupdocs.parser.options import TextOptions
options = TextOptions()
try:
options.include_annotation = True
except AttributeError as error:
print(error)
wheel ตัวเดียวสำหรับ Python 3.5 – 3.14
รุ่น 25.12 เป็นส่วนขยายที่คอมไพล์, มีโมดูลไบนารีหนึ่งไฟล์ต่อเวอร์ชัน Python และรันไทม์ .NET Core 3.1 รุ่น 26.10 เป็น wheel py3-none-<platform> ตัวเดียวต่อแพลตฟอร์ม, เป็น Python ธรรมดาบนรันไทม์ .NET 10 ที่ฝังอยู่, และระบุ python_requires=">=3.5,<3.15". Python 3.14 เป็นเวอร์ชันใหม่: รุ่น 25.12 ระบุ <3.14. โค้ดส่วนใหญ่ของรุ่น 25.12 ทำงานโดยไม่ต้องแก้ไข, และตัวอย่าง Docs ทั้ง 129 ตัวที่ทำงานบนรุ่น 25.12 ก็ทำงานบนรุ่น 26.10 ด้วย get_text() และ get_formatted_text() ยังคงคืนค่า str ซึ่งตอนนี้ยังรองรับ read_to_end() ด้วย
แท็กแพลตฟอร์มที่อัปเดตและ wheel Windows 64‑bit
wheel สำหรับ Linux มีแท็ก manylinux_2_27_x86_64 ซึ่งเป็น glibc ที่เก่าที่สุดที่รันไทม์ .NET 10 ฝังอยู่, ส่วน wheel สำหรับ macOS มี macosx_13_0_x86_64 และ macosx_13_0_arm64. ไม่มี wheel Windows 32‑bit อีกต่อไป การติดตั้งต้องใช้ pip 20.3 หรือใหม่กว่า
ตัวอย่างโค้ด
สกัด annotation จากเอกสาร Word และรวมไว้ในข้อความที่สกัด:
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))
วิธีรับอัปเดต
PyPI
ติดตั้งหรืออัปเกรดผ่าน PyPI:
groupdocs-parser-net 26.10.0 on PyPI
pip install groupdocs-parser-net==26.10.0
ดาวน์โหลดโดยตรง
ดาวน์โหลด wheel เฉพาะแพลตฟอร์มจากหน้ารีลีส GroupDocs.Parser for Python via .NET 26.10: