यह चंकिंग के माध्यम से तालिका संरचना को संरक्षित करता है और निष्कर्षण
पाइपलाइन में, जहां एलएलएम सीधे संरचित कोशिकाओं से संबंधों को निकाल सकता है,
कॉलम संरेखण का अनुमान लगाने के बजाय खाली स्थान से।
### छवि प्रबंधन
छवियों को लाइब्रेरियन में चाइल्ड दस्तावेज़ों के रूप में निकाला और संग्रहीत किया जाता है
`document_type="image"` और एक `urn:image:{uuid}` आईडी के साथ। उन्हें
प्रकार `tg:Image` के साथ प्रामाणिकता ट्रिपल मिलते हैं, जो उनके मूल
पृष्ठ/अनुभाग से `prov:wasDerivedFrom` के माध्यम से जुड़े होते हैं। छवि मेटाडेटा (निर्देशांक,
आयाम, तत्व_आईडी) को प्रामाणिकता में दर्ज किया जाता है।
**महत्वपूर्ण रूप से, छवियों को टेक्स्टडॉक्यूमेंट आउटपुट के रूप में उत्सर्जित नहीं किया जाता है।** वे
केवल संग्रहीत होते हैं - चंकर या किसी भी टेक्स्ट प्रोसेसिंग
पाइपलाइन में नीचे की ओर नहीं भेजे जाते हैं। यह जानबूझकर है:
1. अभी तक कोई छवि प्रसंस्करण पाइपलाइन नहीं है (विज़न मॉडल एकीकरण
भविष्य का कार्य है)
2. आधार64 छवि डेटा या ओसीआर टुकड़ों को टेक्स्ट निष्कर्षण
पाइपलाइन में फीड करने से कचरा केजी ट्रिपल उत्पन्न होंगे
छवियों को असेंबल किए गए पृष्ठ टेक्स्ट से भी बाहर रखा गया है - कोई भी `Image`
तत्व एक पृष्ठ/अनुभाग के लिए तत्व टेक्स्ट को संयोजित करते समय चुपचाप छोड़ दिए जाते हैं। प्रामाणिकता श्रृंखला में दर्ज किया गया है कि छवियां मौजूद हैं और वे दस्तावेज़ में कहां दिखाई दीं, ताकि उन्हें भविष्य के
पृष्ठ/अनुभाग। उत्पत्ति श्रृंखला में दर्ज है कि चित्र मौजूद हैं और वे कहाँ स्थित हैं।
छवि प्रसंस्करण पाइपलाइन द्वारा दस्तावेज़ को फिर से संसाधित किए बिना प्राप्त किया जा सके।
#### भविष्य का कार्य
`tg:Image` संस्थाओं को विवरण,
आरेख व्याख्या या चार्ट डेटा निष्कर्षण के लिए एक विज़न मॉडल में रूट करें
छवि विवरण को टेक्स्ट चाइल्ड दस्तावेज़ों के रूप में संग्रहीत करें जो
मानक चंकिंग/निष्कर्षण पाइपलाइन में फीड करते हैं
निकाले गए ज्ञान को प्रामाणिकता के माध्यम से स्रोत छवियों से लिंक करें
### अनुभाग रणनीतियाँ
पृष्ठ-आधारित प्रारूपों (पीडीएफ, पीपीटीएक्स, एक्सएलएसएक्स) के लिए, तत्वों को हमेशा
पहले पृष्ठ/स्लाइड/शीट द्वारा समूहीकृत किया जाता है। गैर-पृष्ठ प्रारूपों (डीओसीएक्स, एचटीएमएल, मार्कडाउन,
आदि) के लिए, डिकोडर को दस्तावेज़ को अनुभागों में विभाजित करने के लिए एक रणनीति की आवश्यकता होती है। यह ⟦CODE_0⟧ के माध्यम से रनटाइम पर कॉन्फ़िगर करने योग्य है।
अनुभाग। यह `--section-strategy` के माध्यम से रनटाइम पर कॉन्फ़िगर किया जा सकता है।
प्रत्येक रणनीति `unstructured` तत्वों की सूची पर एक समूहीकरण फ़ंक्शन है। आउटपुट तत्वों के समूहों की एक सूची है; बाकी
तत्व। आउटपुट तत्वों के समूहों की एक सूची है; बाकी का
पूरे दस्तावेज़ को एक ही अनुभाग के रूप में उत्सर्जित करें। डाउनस्ट्रीम
चंकर को सभी विभाजन को संभालने दें।
सबसे सरल दृष्टिकोण, अच्छा आधार रेखा
बड़ी फ़ाइलों के लिए बहुत बड़ा टेक्स्टडॉक्यूमेंट उत्पन्न कर सकता है, लेकिन चंकर
इसे संभालता है
जब आप प्रति अनुभाग अधिकतम संदर्भ चाहते हैं तो सबसे अच्छा
#### `heading`
शीर्षलेख तत्वों (`Title`) पर विभाजित करें। प्रत्येक अनुभाग एक शीर्षलेख प्लस
सभी सामग्री है जब तक कि समान या उच्च स्तर का अगला शीर्षलेख न हो। नेस्टेड
शीर्षलेख नेस्टेड अनुभाग बनाते हैं।
विषयगत रूप से सुसंगत इकाइयाँ उत्पन्न करता है
संरचित दस्तावेज़ों (रिपोर्ट, मैनुअल, विनिर्देश) के लिए अच्छा काम करता है
निष्कर्षण एलएलएम को सामग्री के साथ शीर्षलेख संदर्भ देता है
यदि कोई शीर्षलेख नहीं मिला है तो `whole-document` पर वापस आ जाता है
#### `element-type`
जब तत्व प्रकार में महत्वपूर्ण परिवर्तन होता है तो विभाजित करें - विशेष रूप से,
वर्णनात्मक पाठ और तालिकाओं के बीच संक्रमण पर एक नया अनुभाग शुरू करें। लगातार
समान व्यापक श्रेणी (पाठ, पाठ, पाठ या
तालिका, तालिका) के तत्व एक साथ समूहीकृत रहते हैं।
तालिकाओं को स्टैंडअलोन अनुभागों के रूप में रखता है
मिश्रित सामग्री वाले दस्तावेज़ों (डेटा तालिकाओं वाली रिपोर्ट) के लिए अच्छा है
तालिकाओं को समर्पित निष्कर्षण ध्यान मिलता है
#### `count`
तत्वों की एक निश्चित संख्या को प्रति अनुभाग समूहीकृत करें। ⟦CODE_0⟧ के माध्यम से कॉन्फ़िगर करने योग्य (डिफ़ॉल्ट: 20)।
`--section-element-count` (डिफ़ॉल्ट: 20)।
सरल और अनुमानित
दस्तावेज़ संरचना का सम्मान नहीं करता है
प्रयोग के लिए एक फ़ॉलबैक या उपयोगी
#### `size`
तत्वों को तब तक जमा करें जब तक कि एक वर्ण सीमा तक न पहुँच जाए, फिर एक नया अनुभाग शुरू करें। तत्वों की सीमाओं का सम्मान करता है - कभी भी किसी तत्व के बीच में विभाजन नहीं करता है।
नए अनुभाग। तत्वों की सीमाओं का सम्मान करता है - कभी भी किसी तत्व के बीच में विभाजन नहीं करता है।
`--section-max-size` के माध्यम से कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट: 4000 अक्षर)।
लगभग समान खंड आकार उत्पन्न करता है।
तत्वों की सीमाओं का सम्मान करता है (डाउनस्ट्रीम चंकर के विपरीत)।
संरचना और आकार नियंत्रण के बीच एक अच्छा समझौता।
यदि कोई एकल तत्व सीमा से अधिक है, तो वह अपने आप में एक खंड बन जाता है।
#### पृष्ठ-आधारित प्रारूप इंटरैक्शन
पृष्ठ-आधारित स्वरूपों के लिए, पृष्ठ समूहीकरण हमेशा प्राथमिकता लेता है।
अनुभाग रणनीतियों को वैकल्पिक रूप से एक पृष्ठ के *अंदर* लागू किया जा सकता है यदि वह बहुत बड़ा है (उदाहरण के लिए, एक बहुत बड़े तालिका वाला पीडीएफ पृष्ठ), जिसे द्वारा नियंत्रित किया जाता है।
बड़ा (उदाहरण के लिए, एक पीडीएफ पृष्ठ जिसमें एक बहुत बड़ा तालिका है), जिसे नियंत्रित किया जाता है।
`--section-within-pages` (डिफ़ॉल्ट: गलत)। जब गलत होता है, तो प्रत्येक पृष्ठ का
आकार की परवाह किए बिना हमेशा एक ही खंड होता है।
### प्रारूप का पता लगाना
डीकोडर को दस्तावेज़ के एमआईएमई प्रकार के बारे में पता होना चाहिए ताकि इसे आगे बढ़ाया जा सके।
`unstructured` का `partition()`। दो रास्ते:
**लाइब्रेरियन पथ** (`document_id` सेट): दस्तावेज़ मेटाडेटा प्राप्त करें।
सबसे पहले लाइब्रेरियन से जानकारी प्राप्त करें - यह हमें `kind` (मिम टाइप) देता है।
जो अपलोड के समय दर्ज किया गया था। फिर दस्तावेज़ सामग्री प्राप्त करें।
दो लाइब्रेरियन कॉल, लेकिन मेटाडेटा प्राप्त करना आसान है।
**इनलाइन पथ** (पिछला संगतता, `data` सेट): संदेश पर कोई मेटाडेटा उपलब्ध नहीं है।
प्रारूप का पता लगाने के लिए `python-magic` का उपयोग करें।
सामग्री बाइट्स से एक वैकल्पिक विधि के रूप में।
`Document` स्कीमा में कोई बदलाव आवश्यक नहीं है - लाइब्रेरियन पहले से ही MIME प्रकार संग्रहीत करता है।
### वास्तुकला
एक एकल `universal-decoder` सेवा जो:
1. एक `Document` संदेश प्राप्त होता है (इनलाइन या लाइब्रेरियन संदर्भ के माध्यम से)।
2. यदि लाइब्रेरियन पथ है: दस्तावेज़ मेटाडेटा प्राप्त करें (मिम प्रकार प्राप्त करें), फिर
सामग्री प्राप्त करें। यदि इनलाइन पथ है: सामग्री बाइट्स से प्रारूप का पता लगाएं।
3. तत्वों को निकालने के लिए `partition()` को कॉल करता है।
4. तत्वों को समूहीकृत करता है: पृष्ठ-आधारित प्रारूपों के लिए पृष्ठ द्वारा, गैर-पृष्ठ प्रारूपों के लिए कॉन्फ़िगर किए गए
अनुभाग रणनीति द्वारा।
5. प्रत्येक पृष्ठ/अनुभाग के लिए:
एक `urn:page:{uuid}` या `urn:section:{uuid}` आईडी उत्पन्न करता है।
पृष्ठ पाठ को असेंबल करता है: वर्णनात्मक पाठ को सादे पाठ के रूप में, तालिकाओं को HTML के रूप में,
छवियों को छोड़ दिया जाता है।
पृष्ठ पाठ के भीतर प्रत्येक तत्व के लिए वर्ण अद्ययनों की गणना करता है।
लाइब्रेरियन में एक चाइल्ड दस्तावेज़ के रूप में सहेजता है।
स्थिति संबंधी मेटाडेटा के साथ प्रामाणिकता ट्रिपल उत्सर्जित करता है।
टुकड़ों में विभाजित करने के लिए `TextDocument` को आगे भेजता है।
6. प्रत्येक छवि तत्व के लिए:
एक `urn:image:{uuid}` आईडी उत्पन्न करता है।
छवि डेटा को लाइब्रेरियन में एक चाइल्ड दस्तावेज़ के रूप में सहेजता है।
प्रामाणिकता ट्रिपल उत्सर्जित करता है (केवल संग्रहीत, आगे नहीं भेजा गया)।
प्रकार को डिकोडर द्वारा यह निर्धारित किया जाता है कि यह पृष्ठ द्वारा समूहीकृत है या पूरे दस्तावेज़ अनुभाग को उत्सर्जित कर रहा है। ⟦CODE_0⟧ प्राप्त होता है।
या पूरे दस्तावेज़ अनुभाग को उत्सर्जित कर रहा है। `derived_entity_triples` प्राप्त होता है।
एक वैकल्पिक `section` बूलियन पैरामीटर - जब सत्य होता है, तो इकाई को
`tg:Section` के रूप में टाइप किया जाता है, `tg:Page` के बजाय।
#### पूर्ण उत्पत्ति श्रृंखला
```
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)
```
प्रत्येक लिंक, `GRAPH_SOURCE` नामक ग्राफ में ट्रिपल के एक सेट का प्रतिनिधित्व करता है।
### सेवा कॉन्फ़िगरेशन
कमांड-लाइन तर्क:
```
--strategy Partitioning strategy: auto, hi_res, fast (default: auto)
--languages Comma-separated OCR language codes (default: eng)