GroupDocs.Parser for Python v26.10 sürümünün Kasım 2026 itibarıyla yayınlandığını duyurmaktan mutluluk duyuyoruz. Bu sürüm, temel motoru 26.8 sürümüne yükseltiyor ve .NET Core 3.1’den .NET 10.0.14’e geçiyor; System.Security.Cryptography.Pkcs içinde iki hizmet reddi (DoS) açığını düzeltiyor. Ek açıklama çıkarma, HTML tablo ayrıştırma, Arapça ve Korece OCR, bir Python günlüğü, harici kaynak işleme, önizleme geri aramaları düz fonksiyonlar olarak ve bir groupdocs-parser komut satırı aracı gibi büyük yeni özellikler sunuyor. Wheel artık Python 3.5 – 3.14 hedefleyen saf‑Python paketi; güncellenmiş platform etiketleri (manylinux_2_27_x86_64, macosx_13_0_*) ve 32‑bit Windows wheel’i kaldırıldı.
Bu sürümdeki yenilikler
- [Feature]
get_annotations()veTextOptions.include_annotationsile ek açıklamaları çıkarmayı destekle (PARSERPYTHONNET-23) - [Feature]
groupdocs-parserkomut satırı aracını ekle (PARSERPYTHONNET-24) - [Feature]
ILoggerarayüzünü uygulayan bir Python günlüğü nesnesini destekle (PARSERPYTHONNET-25) - [Feature] Python üzerinden harici kaynakların yüklenmesini yönetmeyi destekle (PARSERPYTHONNET-26)
- [Feature] Arapça ve Korece metinler için OCR ekle (PARSERPYTHONNET-27)
- [Feature] HTML belgelerinden tabloları çıkarmayı destekle (PARSERPYTHONNET-28)
- [Feature]
GROUPDOCS_LIC_PATHortam değişkeninden lisans uygulamayı ekle (PARSERPYTHONNET-36) - [Enhancement] GroupDocs.Parser’ı 26.8 ve gömülü çalışma zamanını .NET 10.0.14 olarak güncelle (PARSERPYTHONNET-29)
- [Enhancement] Derlenmiş uzantı yerine Python 3.5 – 3.14 için saf‑Python paketi sun (PARSERPYTHONNET-30)
- [Enhancement] Önizleme geri aramalarını
PreviewOptionsiçinde düz Python fonksiyonları olarak geçir (PARSERPYTHONNET-31) - [Enhancement] API nesnelerinin bilinmeyen öznitelik atamalarını reddet (PARSERPYTHONNET-32)
- [Enhancement] Platform etiketlerini glibc 2.27 ve macOS 13 olarak güncelle, 32‑bit Windows wheel’ini kaldır (PARSERPYTHONNET-33)
- [Enhancement]
RuntimeErroryerineGroupDocsParserExceptionve alt sınıflarını yükselt (PARSERPYTHONNET-34) - [Enhancement]
System.Security.Cryptography.Pkcs‘i 10.0.14’e güncelle, iki DoS açığını düzelt (PARSERPYTHONNET-37) - [Fix] Bazı Word ve RTF belgeleri
The document appears to be corruptedhatası veya eksikSkiaSharp3.119 derlemesi ile başarısız oluyor (PARSERPYTHONNET-35) - [Fix]
BytesIOüzerinden açılan her belgeyle bellek artıyor (PARSERPYTHONNET-38)
Genel API değişiklikleri
- Motor hataları,
groupdocs.parser.exceptionsiçindekiGroupDocsParserException,InvalidPasswordException,CorruptedDocumentExceptionveyaUnsupportedDocumentFormatExceptionhatalarını yükseltiyor; 25.12’de tümüRuntimeErrorile yükseltiliyordu. Bu sınıflar 25.12’de mevcuttu ancakException‘dan türemiyordu ve hiç yükseltilmemişti.except Exceptionher iki sürümün hatalarını yakalar. - Bilinmeyen bir öznitelik ataması
AttributeErrorverir. - Motorun döndürdüğü listeler
len()ve indekslemeyi destekler; boş bir liste yanlıştır (False).
Kaldırıldı
groupdocs.parser.options.ICreatePageStreamgroupdocs.parser.options.IReleasePageStreamgroupdocs.parser.options.IPreviewPageRender
Bunun yerine PreviewOptions ve PreviewOptions.preview_page_render fonksiyonlarını kullanın.
Yeni sınıflar ve üyeler
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()vetable[row, column].DocumentData,Template:get().TemplateCollection:append().Resources:storage_path, yazılabilir.
Yeni özellikler
Ek açıklamaları çıkarma
Parser.get_annotations() bir PDF, Word veya PowerPoint belgesinin yorum ve notlarını AnnotationItem nesneleri olarak döndürür; değer, tip, sayfa indeksi, zaman damgası, yazar adı ve baş harfleri içerir; get_annotations(page_index) tek sayfa okur. TextOptions.include_annotations ek açıklama metnini çıkarılan metne ekler ve parser.features.annotations bir formatın ek açıklamaları destekleyip desteklemediğini gösterir.
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))
Komut satırı
Wheel, groupdocs-parser konsol betiğini (aynı zamanda python -m groupdocs.parser) text, info, metadata, images, annotations ve list-formats komutlarıyla kurar. text --page N (1’den sayılır), --format plain|markdown|html, --ocr, --include-annotations ve -o FILE alır; info, metadata ve annotations --json alır; images --out DIR alır; tüm komutlar --password alır. --license ve --version komuttan önce gelir. Çıkış kodu başarılıda 0, eksik dosya gibi kullanıcı hatasında 2, motor hatası veya desteklenmeyen formatta 1 olur.
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 günlüğü
trace(message), warning(message) ve error(message, exception) metodlarına sahip düz bir Python nesnesi, ParserSettings içinde günlüğe geçirilebilir; motor, dosya hasarlı gibi bir durumla karşılaştığında bu nesneyi çağırır. log(level, message, exception) adlı bir fonksiyon da kullanılabilir.
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)
Harici kaynakların yüklenmesini kontrol etme
Motor, bir HTML veya MHTML belgesindeki her resim yüklenmeden önce harici kaynak işleyicisine başvurur. İşleyici bir fonksiyon, on_loading(args) metoduna sahip bir nesne veya ExternalResourceHandler alt sınıfı olabilir; args.skipped = True ayarı kaynağı atlar. ParserSettings bunu external_resource_handler olarak alır.
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 []))
Arapça ve Korece için OCR
OcrOptions.language OCR’ın tanıyacağı alfabeyi seçer; varsayılan İngilizcedir. Language.ARA ve Language.KOR bu motorun yeni eklemeleridir. Tanıma modelleri motorun bir parçasıdır: ilk OCR çağrısı yaklaşık 80 MB’lık modelleri çalışma dizinindeki aspose_data klasörüne indirir, indirme gerekmez. Klasörü seçmek için ilk OCR çağrısından önce Resources.storage_path (from groupdocs.parser import Resources) ayarlayı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)))
HTML belgelerinden tablolar
get_tables() artık HTML belgelerindeki tabloları bulur; PDF, Word ve elektronik tablo belgelerinde olduğu gibi; 25.12’de hiç bulamamıştı. Bir hücre table[row, column] ya da table.get(row, column) şeklinde erişilir.
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)])
Ortamdan lisans
GROUPDOCS_LIC_PATH ortam değişkenini bir lisans dosyasının yolu ya da onu sunan bir URL olarak ayarlayın; lisans ilk Parser çağrısında uygulanır, lisans kodu gerekmez; 25.12 bu değişkeni okumazdı. Lisans uygulanamazsa (dosya eksik, abonelik süresi dolmuş, başka bir ürünün lisansı) her Parser çağrısı LicenseError fırlatır; değişken adı ve motorun nedeni mesajda yer alır, License().set_license() bir lisans uygulayana kadar. GROUPDOCS_LIC_STRICT=0 ayarı bir LicenseWarning ve değerlendirme modunu verir.
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>
Önizleme geri aramaları düz fonksiyonlar olarak
PreviewOptions(create_page_stream, release_page_stream) normal fonksiyonları alır; PreviewOptions.preview_page_render da aynı şekilde çalışır. create_page_stream(page_number) yazılabilir bir akış döndürür, örneğin "wb" ile açılmış bir dosya ya da bir io.BytesIO; sayfalar 1’den başlar. Motor verilen dosyayı kapatır ve sayfa yazıldıktan sonra release_page_stream(page_number) çağırır. 25.12’de bu sınıflar ICreatePageStream, IReleasePageStream ve IPreviewPageRender idi.
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)
Yanlış yazılmış öznitelikler AttributeError hatası verir
API nesnesinde bulunmayan bir özelliğe atama yapılırsa, “Did you mean …” ipucu içeren bir AttributeError yükseltilir. 25.12 bu atamayı kabul eder, sadece Python‑özel bir öznitelik saklar ve motor ayarını değiştirmez.
from groupdocs.parser.options import TextOptions
options = TextOptions()
try:
options.include_annotation = True
except AttributeError as error:
print(error)
Python 3.5 – 3.14 için tek tekerlek
25.12 derlenmiş bir uzantıydı; her Python sürümü için ayrı ikili modül ve .NET Core 3.1 çalışma zamanı içeriyordu. 26.10 bir py3-none-<platform> tekerleği; gömülü .NET 10 çalışma zamanı üzerine saf Python; python_requires=">=3.5,<3.15" bildiriyor. Python 3.14 yeni eklenmiştir; 25.12 <3.14 olarak sınırlıydı. Çoğu 25.12 kodu değişmeden çalışır ve 25.12’de çalışan 129 Docs örneği 26.10’da da çalışır. get_text() ve get_formatted_text() hâlâ bir str döndürür; artık read_to_end() da yanıt verir.
Güncellenmiş platform etiketleri ve 64-bit Windows tekerleği
Linux tekerleği manylinux_2_27_x86_64 etiketiyle, gömülü .NET 10 çalışma zamanının başladığı en eski glibc sürümünü gösterir; macOS tekerlekleri macosx_13_0_x86_64 ve macosx_13_0_arm64. Artık 32‑bit Windows tekerleği yoktur. Kurulum için pip 20.3 veya daha yenisi gerekir.
Kod örneği
Bir Word belgesinden ek açıklamaları çıkarın ve çıkarılan metne ekleyin:
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))
Güncellemeyi nasıl alabilirsiniz
PyPI
PyPI üzerinden kurun veya yükseltin:
groupdocs-parser-net 26.10.0 PyPI’de
pip install groupdocs-parser-net==26.10.0
Doğrudan indirme
GroupDocs.Parser for Python via .NET 26.10 sürüm sayfasından platforma özel tekerlekleri indirin: