mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 08:26:21 +02:00
405 lines
19 KiB
Markdown
405 lines
19 KiB
Markdown
|
|
---
|
|||
|
|
layout: default
|
|||
|
|
title: "Evrensel Belge Kodlayıcı"
|
|||
|
|
parent: "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:
|
|||
|
|
|
|||
|
|
1. Henüz bir resim işleme işlem hattı yoktur (görsel model entegrasyonu
|
|||
|
|
gelecekteki bir çalışmadır)
|
|||
|
|
2. 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:
|
|||
|
|
|
|||
|
|
1. Bir `Document` mesajı alır (doğrudan veya kütüphaneci referansı aracılığıyla)
|
|||
|
|
2. 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.
|
|||
|
|
3. Öğeleri çıkarmak için `partition()`'ı çağırır
|
|||
|
|
4. Öğ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
|
|||
|
|
5. Her sayfa/bölüm için:
|
|||
|
|
Bir `urn:page:{uuid}` veya `urn: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çin `TextDocument`'ı aşağı akışa gönderir
|
|||
|
|
6. 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 |
|
|||
|
|
|----------|------------------------------------|------------|--------------------------------|
|
|||
|
|
| PDF | 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.
|