> **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.
`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)
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)
| 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)