Native CLI i18n: The TrustGraph CLI has built-in translation support that dynamically loads language strings. You can test and use different languages by simply passing the --lang flag (e.g., --lang es for Spanish, --lang ru for Russian) or by configuring your environment's LANG variable. Automated Docs Translations: This PR introduces autonomously translated Markdown documentation into several target languages, including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew, Arabic, Simplified Chinese, and Russian.
19 KiB
| layout | title | parent |
|---|---|---|
| default | Evrensel Belge Kodlayıcı | Turkish (Beta) |
Evrensel Belge Kodlayıcı
Beta Translation: This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
Başlık
unstructured tarafından desteklenen evrensel belge kodlayıcı — tüm kaynak konumlarını, uçtan uca izlenebilirlik için bilgi grafiği meta verisi olarak kaydederek, tam kökenli ve kütüphaneci entegrasyonu ile herhangi bir yaygın belge formatını tek bir hizmet aracılığıyla işleyin.
Sorun
TrustGraph şu anda PDF'ye özel bir çözücüye (decoder) sahip. Ek formatları (DOCX, XLSX, HTML, Markdown, düz metin, PPTX, vb.) desteklemek, ya her format için yeni bir çözücü yazmayı veya evrensel bir çıkarma kütüphanesini kullanmayı gerektirir. Her formatın farklı bir yapısı vardır — bazıları sayfa tabanlıyken, bazıları değildir — ve köken zinciri, çıkarılan her metin parçasının orijinal belgede nereden geldiğini kaydetmelidir.
Yaklaşım
Yaklaşım
Kütüphane: unstructured
unstructured.partition.auto.partition()'ı kullanın, bu, formatı otomatik olarak algılar
MIME türünden veya dosya uzantısından yapılandırılmış öğeleri ayıklar
(Başlık, AnlatıMetni, Tablo, Madde, vb.). Her öğe aşağıdaki bilgileri içerir:
page_number (sayfa tabanlı formatlar için, örneğin PDF, PPTX)
element_id (her öğe için benzersiz)
coordinates (PDF'ler için sınırlayıcı kutu)
text (çıkarılan metin içeriği)
category (öğe türü: Başlık, AnlatıMetni, Tablo, vb.)
Öğe Türleri
unstructured, belgelerden türlenmiş öğeleri çıkarır. Her öğenin bir kategorisi ve ilişkili meta verileri vardır:
Metin öğeleri:
Title — bölüm başlıkları
NarrativeText — ana metin paragrafları
ListItem — madde işaretli/numaralandırılmış liste öğeleri
Header, Footer — sayfa başlıkları/altbilgileri
FigureCaption — şekiller/görseller için başlıklar
Formula — matematiksel ifadeler
Address, EmailAddress — iletişim bilgileri
CodeSnippet — kod blokları (markdown'dan)
Tablolar:
Table — yapılandırılmış tablo verileri. unstructured, hem
element.text (düz metin) hem de element.metadata.text_as_html
(satırlar, sütunlar ve başlıklar korunmuş, tam HTML <table>) sağlar.
Açık tablo yapısına sahip formatlar (DOCX, XLSX, HTML) için,
çıkarma işlemi son derece güvenilirdir. PDF'ler için, tablo tespiti,
düzen analizini içeren hi_res stratejisine bağlıdır.
Görseller:
Image — düzen analizi yoluyla algılanan yerleşik görseller (gerektirir
hi_res stratejisi). extract_image_block_to_payload=True ile,
görüntü verilerini element.metadata.image_base64 içinde base64 olarak döndürür.
Görüntüden elde edilen OCR metni element.text içinde mevcuttur.
Tablo İşleme
Tablolar, birincil bir çıktı türüdür. Kod çözücü, bir Table
öğesiyle karşılaştığında, düz metne dönüştürmek yerine HTML yapısını korur.
Bu, aşağı akış LLM çıkarıcısının, yapılandırılmış verileri içeren
tablo verilerinden daha iyi bilgi almasını sağlar.
Sayfa/bölüm metni aşağıdaki gibi birleştirilir:
Metin öğeleri: yeni satırlarla birleştirilmiş düz metin
Tablo öğeleri: text_as_html'dan HTML tablo işaretlemesi, bir
<table> işaretinin içine sarılır, böylece LLM tabloları, anlatıdan
ayırt edebilir.
Örneğin, bir başlık, paragraf ve tablo içeren bir sayfa şu şekilde üretilir:
Financial Overview
Revenue grew 15% year-over-year driven by enterprise adoption.
<table>
<tr><th>Quarter</th><th>Revenue</th><th>Growth</th></tr>
<tr><td>Q1</td><td>$12M</td><td>12%</td></tr>
<tr><td>Q2</td><td>$14M</td><td>17%</td></tr>
</table>
Bu, tablo yapısını parçalara ayırarak ve çıkarma işlemine aktararak korur. Bu sayede, LLM (Büyük Dil Modeli), sütun hizalamasını boşluklardan tahmin etmek yerine, doğrudan yapılandırılmış hücrelerden ilişkileri çıkarabilir.
Resim İşleme
Görüntüler çıkarılır ve kütüphanede alt belgeler olarak saklanır.
document_type="image" ile ve urn:image:{uuid} kimlik numarasına sahip. Bunlar
tg:Image türündeki köken bilgisi üçlülerini içerir ve bunlar, ebeveynlerine bağlanmıştır.
sayfa/bölüm, prov:wasDerivedFrom aracılığıyla. Görüntü meta verileri (koordinatlar,
boyutlar, element_id) provenians kısmında kaydedilir.
Önemli olarak, resimler, TextDocument çıktıları olarak YAYINLANMAMAKTIR. Bunlar yalnızca saklanır; parçalayıcıya veya herhangi bir metin işleme işlem hattına gönderilmez. Bu kasıtlıdır:
- Henüz bir resim işleme işlem hattı yoktur (görsel model entegrasyonu gelecekteki bir çalışmadır)
- Base64 resim verilerini veya OCR parçalarını metin çıkarma işlem hattına vermek, hatalı KG üçlüleri üretir.
Görüntüler de birleştirilmiş sayfa metninden hariç tutulur; herhangi bir Image
öğesi, bir sayfa/bölüm için öğe metinlerini birleştirirken sessizce atlanır.
Kaynak zinciri, görüntülerin var olduğunu ve belgede nerede
bulunduğunu kaydeder, böylece gelecekte bir görüntü işleme hattı tarafından
belgenin yeniden yüklenmesi olmadan da alınabilirler.
Gelecek çalışmalar
tg:Image varlıklarını, açıklama,
diyagram yorumlama veya grafik veri çıkarma için bir görsel modele yönlendirin.
Görüntü açıklamalarını, standart parçalama/çıkarma işlem hattına beslenen metin alt belgeleri olarak kaydedin.
Çıkarılan bilgileri, kaynak görüntüleriyle köken bilgisi aracılığıyla ilişkilendirin.
Bölüm Stratejileri
Sayfa tabanlı formatlar (PDF, PPTX, XLSX) için, öğeler her zaman önce sayfa/slayt/sayfa içinde gruplandırılır.
Sayfa tabanlı olmayan formatlar (DOCX, HTML, Markdown,
vb.) için, kodlayıcının belgeyi bölümlere ayırmak için bir stratejiye ihtiyacı vardır.
Bu, çalışma zamanında --section-strategy aracılığıyla yapılandırılabilir.
Her strateji, unstructured öğelerinin listesi üzerinde bir gruplama fonksiyonudur.
Çıktı, öğe gruplarının bir listesidir; geri kalan işlem hattı (metin birleştirme, kütüphane depolama, köken, TextDocument
oluşturma) stratejiden bağımsız olarak aynıdır.
whole-document (varsayılan)
Tüm belgeyi tek bir bölüm olarak yayınlayın. Bölme işlemlerinin tümü, sonraki parçalayıcı tarafından gerçekleştirilir.
En basit yaklaşım, iyi bir başlangıç noktası. Büyük dosyalar için çok büyük TextDocument'ler oluşturabilir, ancak parçalayıcı bunu yönetir. Her bölüm için maksimum bağlam istediğinizde en iyisidir.
heading
Başlık öğelerinde (Title) bölün. Her bölüm, bir başlık ve bir sonraki
aynı veya daha yüksek seviyedeki başlığa kadar olan tüm içeriktir. İç içe
başlıklar, iç içe bölümler oluşturur.
Konuyla ilgili tutarlı birimler oluşturur.
Yapılandırılmış belgeler (raporlar, kılavuzlar, teknik özellikler) için iyi çalışır.
Çıkarma LLM'sine, içerikle birlikte başlık bağlamı sağlar.
Başlık bulunamazsa whole-document'a geri döner.
element-type
Eleman türü önemli ölçüde değiştiğinde bölmeyi yapın — özellikle, anlatısal metin ile tablolar arasındaki geçişlerde yeni bir bölüm başlatın. Aynı geniş kategoriye ait ardışık öğeler (metin, metin, metin veya tablo, tablo) gruplandırılır.
Tabloları bağımsız bölümler olarak tutar Karışık içerikli belgeler için uygundur (veri tabloları içeren raporlar) Tablolar, özel bir çıkarma işlemine tabi tutulur
count
Bir bölümdeki öğe sayısını sabit bir sayıda gruplandırın. ⟦CODE_0⟧ aracılığıyla yapılandırılabilir (varsayılan: 20).
--section-element-count (varsayılan: 20).
Basit ve öngörülebilir Belge yapısını dikkate almaz Yedek çözüm olarak veya deneme yapmak için kullanışlıdır
size
Öğeleri, bir karakter limiti dolana kadar biriktirin, ardından yeni bir bölüm başlatın. Öğeler arasındaki sınırları dikkate alır; hiçbir zaman bir öğenin ortasında bölünme yapmaz.
⟦CODE_0⟧ gibi yer tutucuları veya ⟦URL_0⟧ gibi URL'leri çevirmeyin; bunları olduğu gibi bırakın.
--section-max-size aracılığıyla yapılandırılabilir (varsayılan: 4000 karakter).
Yaklaşık olarak homojen bölüm boyutları üretir. Eleman sınırlarına saygı gösterir (aşağıdaki parçalayıcıdan farklı olarak). Yapı ve boyut kontrolü arasında iyi bir denge sağlar. Tek bir eleman limiti aşarsa, kendi bölümü haline gelir.
Sayfa tabanlı format etkileşimi
Sayfa tabanlı formatlar için, sayfa gruplandırması her zaman önceliklidir. Bölüm stratejileri, isteğe bağlı olarak, çok büyükse (örneğin, devasa bir tablo içeren bir PDF sayfası) bir sayfa içinde uygulanabilir, bu durum ⟦CODE_0⟧ ile kontrol edilir (varsayılan: false). Yanlış olduğunda, her sayfa boyuttan bağımsız olarak her zaman bir bölümdür.
--section-within-pages (varsayılan: false).
Biçim Algılama
Kodlayıcının, belgeyi ⟦CODE_0⟧'ın ⟦CODE_1⟧'ine iletebilmesi için belgenin MIME türünü bilmesi gerekir. İki yol:
unstructured'ın partition()'i.
Kütüphaneci yolu (document_id ayarı): belge meta verilerini alın.
Öncelikle kütüphaneciden belge meta verilerini alın — bu, kind (mime türü) değerini verir.
Ardından belge içeriğini alın.
İki kütüphaneci çağrısı, ancak meta veri alma işlemi hafiftir.
Satır içi yol (geriye dönük uyumluluk, data ayarı): mesaj üzerinde herhangi bir meta veri bulunmamaktadır.
Biçimi tespit etmek için python-magic'ı kullanın.
Bu, içerik baytlarından biçimi algılamak için bir yedek yöntemdir.
Document şemasına herhangi bir değişiklik yapılmasına gerek yok — kütüphaneci zaten MIME türünü saklar.
Mimari
Tek bir universal-decoder hizmeti:
- Bir
Documentmesajı alır (doğrudan veya kütüphaneci referansı aracılığıyla) - Kütüphaneci yoluysa: belge meta verilerini alır (MIME türünü alır), ardından içeriği alır. Doğrudan yol ise: içeriğin baytlarından formatı algılar.
- Öğeleri çıkarmak için
partition()'ı çağırır - Öğeleri gruplandırır: sayfa tabanlı formatlar için sayfalara göre, sayfa dışı formatlar için yapılandırılmış bölüm stratejisine göre
- Her sayfa/bölüm için:
Bir
urn:page:{uuid}veyaurn:section:{uuid}kimliği oluşturur Sayfa metnini birleştirir: anlatı düz metin olarak, tablolar HTML olarak, resimler atlanır Sayfa metnindeki her öğe için karakter ofsetlerini hesaplar Kütüphaneciye alt belge olarak kaydeder Konumsal meta verilerle birlikte kaynak üçlüleri yayınlar Parçalama içinTextDocument'ı aşağı akışa gönderir - Her resim öğesi için:
Bir
urn:image:{uuid}kimliği oluşturur Resim verilerini kütüphaneciye alt belge olarak kaydeder Kaynak üçlülerini yayınlar (sadece saklanır, aşağı akışa gönderilmez)
Biçimlendirme İşlemi
| Biçim | MIME Tipi | Sayfa Tabanlı | Notlar |
|---|---|---|---|
| application/pdf | Evet | Sayfaya göre gruplandırma | |
| DOCX | application/vnd.openxmlformats... | Hayır | Bölüm stratejisi kullanır |
| PPTX | application/vnd.openxmlformats... | Evet | Slayda göre gruplandırma |
| XLSX/XLS | application/vnd.openxmlformats... | Evet | Sayfaya göre gruplandırma |
| HTML | text/html | Hayır | Bölüm stratejisi kullanır |
| Markdown | text/markdown | Hayır | Bölüm stratejisi kullanır |
| Düz Metin | text/plain | Hayır | Bölüm stratejisi kullanır |
| CSV | text/csv | Hayır | Bölüm stratejisi kullanır |
| RST | text/x-rst | Hayır | Bölüm stratejisi kullanır |
| RTF | application/rtf | Hayır | Bölüm stratejisi kullanır |
| ODT | application/vnd.oasis... | Hayır | Bölüm stratejisi kullanır |
| TSV | text/tab-separated-values | Hayır | Bölüm stratejisi kullanır |
Kaynak Veri Meta Verileri
Her sayfa/bölüm öğesi, köken bilgisi olarak konum bilgisi meta verilerini kaydeder.
GRAPH_SOURCE içindeki üçlüler, KG üçlülerinden tam bir izlenebilirlik sağlamaktadır.
Kaynak belge konumlarına geri dönme.
Mevcut alanlar (zaten derived_entity_triples içinde)
page_number — sayfa/tablo/slayt numarası (1'den başlayarak, yalnızca sayfa tabanlı)
char_offset — bu sayfa/bölümün,
tam belge metni içindeki karakter ofseti
char_length — bu sayfa/bölümün metninin karakter uzunluğu
Yeni alanlar (derived_entity_triples'ı genişletin)
mime_type — orijinal belge formatı (örneğin, application/pdf)
element_types — unstructured öğelerinden oluşan virgülle ayrılmış liste
bu sayfada/bölümde bulunan kategoriler (örneğin, "Başlık,AnlatıMetni,Tablo")
table_count — bu sayfada/bölümdeki tablo sayısı
image_count — bu sayfada/bölümdeki resim sayısı
Bunlar, yeni TG ad alanı özniteliklerini gerektirir:
TG_SECTION_TYPE = "https://trustgraph.ai/ns/Section"
TG_IMAGE_TYPE = "https://trustgraph.ai/ns/Image"
TG_ELEMENT_TYPES = "https://trustgraph.ai/ns/elementTypes"
TG_TABLE_COUNT = "https://trustgraph.ai/ns/tableCount"
TG_IMAGE_COUNT = "https://trustgraph.ai/ns/imageCount"
Görüntü URN şeması: urn:image:{uuid}
(TG_MIME_TYPE zaten mevcut.)
Yeni varlık türü
Sayfa formatı olmayan (DOCX, HTML, Markdown, vb.) belgeler için, kodlayıcı, belgeyi sayfalara ayırmak yerine tek bir birim olarak yayınladığında, varlığa yeni bir tür atanır:
TG_SECTION_TYPE = "https://trustgraph.ai/ns/Section"
Bu, sorgulama sırasında kökeni belirlerken bölümleri sayfalardan ayırır:
| Varlık | Tür | Ne zaman kullanılır |
|---|---|---|
| Belge | tg:Document |
Orijinal yüklenen dosya |
| Sayfa | tg:Page |
Sayfaya dayalı formatlar (PDF, PPTX, XLSX) |
| Bölüm | tg:Section |
Sayfaya dayalı olmayan formatlar (DOCX, HTML, MD, vb.) |
| Resim | tg:Image |
Gömülü resimler (saklanan, işlenmeyen) |
| Parça | tg:Chunk |
Parçalayıcının çıktısı |
| Alt Grafik | tg:Subgraph |
KG çıkarma çıktısı |
Tür, kodlayıcı tarafından, sayfalara göre gruplandırılıp gruplandırılmadığına veya tüm belge bölümünün gönderilip gönderilmediğine bağlı olarak belirlenir. ⟦CODE_0⟧ elde edilir.
veya tüm belge bölümünün gönderilip gönderilmediğine bağlı olarak belirlenir. derived_entity_triples kazanır.
isteğe bağlı bir section boolean parametresi — doğru olduğunda, bu, varlığı belirtir.
tg:Section olarak yazılmış, tg:Page yerine.
Tam kaynak zinciri
KG triple
→ subgraph (extraction provenance)
→ chunk (char_offset, char_length within page)
→ page/section (page_number, char_offset, char_length within doc, mime_type, element_types)
→ document (original file in librarian)
Her bağlantı, GRAPH_SOURCE adlı grafikte tanımlanan üçlülerden oluşan bir kümedir.
Hizmet Yapılandırması
Komut satırı argümanları:
--strategy Partitioning strategy: auto, hi_res, fast (default: auto)
--languages Comma-separated OCR language codes (default: eng)
--section-strategy Section grouping: whole-document, heading, element-type,
count, size (default: whole-document)
--section-element-count Elements per section for 'count' strategy (default: 20)
--section-max-size Max chars per section for 'size' strategy (default: 4000)
--section-within-pages Apply section strategy within pages too (default: false)
Ayrıca standart FlowProcessor ve kütüphaneci kuyruk argümanlarını da içerir.
Akış Entegrasyonu
Evrensel kod çözücü, işleme akışında mevcut PDF kod çözücünün bulunduğu aynı konumu işgal eder:
Document → [universal-decoder] → TextDocument → [chunker] → Chunk → ...
Aşağıdakileri kaydeder:
input tüketici (Belge şeması)
output üretici (MetinBelgesi şeması)
triples üretici (Üçlüler şeması)
Kütüphaneci isteği/yanıtı (veri çekme ve alt belge depolama için)
Dağıtım
Yeni kapsayıcı: trustgraph-flow-universal-decoder
Bağımlılık: unstructured[all-docs] (PDF, DOCX, PPTX vb. içerir)
Mevcut PDF çözücüyü tamamlayıcı olarak veya onun yerine çalışabilir.
akış yapılandırması
Mevcut PDF çözücü, ortamlar için kullanılabilir durumda kalacaktır.
unstructured bağımlılıkları çok ağır.
Değişiklikler
| Bileşen | Değişiklik |
|---|---|
provenance/namespaces.py |
TG_SECTION_TYPE, TG_IMAGE_TYPE, TG_ELEMENT_TYPES, TG_TABLE_COUNT, TG_IMAGE_COUNT ekleyin |
provenance/triples.py |
mime_type, element_types, table_count, image_count argümanlarını ekleyin |
provenance/__init__.py |
Yeni sabit değerleri dışa aktarın |
Yeni: decoding/universal/ |
Yeni bir kod çözücü hizmet modülü |
setup.cfg / pyproject |
unstructured[all-docs] bağımlılığını ekleyin |
| Docker | Yeni bir konteyner imajı |
| Akış tanımları | Evrensel kod çözücüyü belge girişi olarak kullanın |
Değişmeyenler
Chunker (MetinBelgesi'ni alır, önceki gibi çalışır) Aşağı akış ayıklayıcıları (Parçayı alır, değişmeden) Kütüphaneci (çocuk belgeleri saklar, değişmeden) Şema (Belge, MetinBelgesi, Parça değişmeden) Sorgu zamanı köken bilgisi (değişmeden)
Riskler
unstructured[all-docs], önemli bağımlılıklara sahiptir (poppler, tesseract,
libreoffice, bazı formatlar için). Container imajı daha büyük olacaktır.
Çözüm: OCR/ofis bağımlılıkları olmadan [light]'ın bir varyantını sunun.
Bazı formatlar, zayıf metin çıkarma sonuçları verebilir (OCR uygulanmamış PDF'ler,
OCR, karmaşık XLSX düzenleri). Çözüm: yapılandırılabilir strategy
parametresi ve mevcut Mistral OCR çözücü kullanılabilir durumda.
Yüksek kaliteli PDF OCR için.
unstructured sürüm güncellemeleri, öğe meta verilerini değiştirebilir.
Çözüm: sürümü sabitleyin, her format için çıkarma kalitesini test edin.