Skip to content

दस्तावेज़ों और PDF को एनोटेट कैसे करें

अनुबंधों, रिपोर्टों और शोध-पत्रों को सपाट टेक्स्ट की जगह दस्तावेज़ के रूप में एनोटेट करें, ताकि लेआउट, पृष्ठ संख्या और पृष्ठों के बीच के संदर्भ बचे रहें।

दस्तावेज़ को उससे निकाले गए टेक्स्ट पर नहीं, बल्कि उसके रेंडर किए गए पृष्ठों पर एनोटेट करें, क्योंकि लेआउट अपने साथ वह अर्थ ले जाता है जिसे निष्कर्षण फेंक देता है और क्योंकि समीक्षक को लेबल पृष्ठ पर ढूँढ़ना होता है। किसी अनुबंध को एक स्ट्रिंग में सपाट कर देने से पृष्ठ संख्या, कॉलम का क्रम, तालिका की संरचना और फुटनोट तथा मुख्य पाठ का भेद, सब खो जाता है।

दस्तावेज़ एनोटेशन वही स्थिति है जहाँ सामान्य टेक्स्ट-एनोटेशन सेटअप विफल होता है। PDF वर्णों का अनुक्रम नहीं, बल्कि पृष्ठों पर बने चिह्नों का वर्णन है, इसलिए एक ही फ़ाइल से दो अलग निष्कर्षक आपको दो अलग स्ट्रिंग देंगे। बहु-स्तंभ पृष्ठ आपस में गुँथ जाते हैं, हेडर और फ़ुटर बीच धारा में आ टपकते हैं, और तालिकाएँ खाली जगह की लंबी कतारें बन जाती हैं। उस स्ट्रिंग पर लेबल लगाने वाला एनोटेटर असल में निष्कर्षक की एक कलाकृति पर लेबल लगा रहा होता है, और बाद में मूल फ़ाइल खोलने वाला समीक्षक हमेशा यह नहीं बता पाता कि स्पैन किस अंश की ओर इशारा कर रहा था।

स्थिति, पृष्ठ संख्या और संदर्भ संरचना

दस्तावेज़ के तीन गुण पृष्ठ पर बचे रहते हैं, निकाले गए टेक्स्ट में नहीं। स्थिति समीक्षक को बताती है कि कोई खंड शीर्षक है, फुटनोट है या मुख्य पाठ, और निष्कर्षण तीनों को वर्णों की एक ही अविभाजित कतार में समेट देता है। पृष्ठ संख्या ही वह चीज़ है जिसके सहारे आगे हर पाठक उस अंश का हवाला देगा, और वह तभी तक मौजूद रहती है जब तक पृष्ठ मौजूद हैं। संदर्भ संरचना यह दर्ज करती है कि कोई अंश किस ओर इशारा करता है, और यह तब मायने रखता है जब एक पृष्ठ का दावा नौ पृष्ठ बाद की तालिका पर टिका हो।

तीसरा गुण ही सबसे ज़्यादा बार औज़ार बदलने पर मजबूर करता है। दस्तावेज़ के भीतर संदर्भ संरचना दो स्थानों के बीच का संबंध है, और जो औज़ार दस्तावेज़ को एक सपाट स्ट्रिंग मानकर चलता है, उसके पास दूसरा स्थान रखने की जगह ही नहीं होती। कानूनी समीक्षा, वैज्ञानिक दावों का सत्यापन और वित्तीय रिपोर्ट विश्लेषण, तीनों उसी संबंध पर टिके हैं।

एंकर के तीन प्रकार

दस्तावेज़ पर किया गया एनोटेशन तीन में से किसी एक तरीके से जुड़ता है, और चुनाव पसंद से नहीं, प्रश्न से तय होता है।

  • टेक्स्ट स्पैन चुने गए शब्दों से जुड़ते हैं और शब्दावली संबंधी प्रश्नों के लिए उपयुक्त हैं। स्पैन के लिए दस्तावेज़ में टेक्स्ट लेयर होनी चाहिए, जो डिजिटल रूप से बनी PDF में होती है और स्कैन में नहीं।
  • क्षेत्र बॉक्स पृष्ठ निर्देशांकों से जुड़ते हैं और आकृतियों, तालिकाओं, मुहरों, हस्ताक्षरों तथा उस हर चीज़ के लिए उपयुक्त हैं जिसे टेक्स्ट लेयर ने कभी पकड़ा ही नहीं। ये बिना किसी टेक्स्ट निष्कर्षण के स्कैन पर भी काम करते हैं।
  • लिंक दो एंकरों को जोड़ते हैं और संदर्भ संरचना के लिए उपयुक्त हैं। लिंक दस्तावेज़ की दो जगहों के बीच एक टाइप किया हुआ, और चाहें तो दिशायुक्त, संबंध दर्ज करता है।

एक ही कार्य में एंकर के प्रकार मिलाना सामान्य बात है। दावा-सत्यापन का कार्य दावों को टेक्स्ट स्पैन के रूप में, तालिकाओं को क्षेत्र बॉक्स के रूप में चिह्नित करता है और उन्हें लिंक से जोड़ देता है।

Potato में इसकी कॉन्फ़िगरेशन

Potato का pdf डिस्प्ले फ़ाइल को PDF.js से रेंडर करता है और एनोटेशन सतह को रेंडर किए गए पृष्ठ पर रखता है। annotation_mode विकल्प एंकर का प्रकार चुनता है और span, bounding_box या link लेता है। लिंक मोड ही संदर्भ वाले प्रश्न का उत्तर देता है, और यह एंकरों तथा लिंकों को अलग-अलग स्कीमा नामों के नीचे दर्ज करता है ताकि दोनों एक्सपोर्ट में अलग पहचाने जा सकें।

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      label: "Document"
      display_options:
        annotation_mode: link
        view_mode: scroll
        zoom: page-width
        enable_text_anchors: true
        enable_region_anchors: true
        anchor_schema: pdf_anchors
        link_schema: pdf_links
        anchor_labels:
          - name: claim
            color: "#dc2626"
          - name: figure
            color: "#2563eb"
        link_types:
          - name: refers_to
            directed: true
            allowed_source_labels: [claim]
            allowed_target_labels: [figure]

view_mode: scroll पृष्ठों को एक ही कंटेनर में ऊपर-नीचे रखता है, जिससे पृष्ठ 2 और पृष्ठ 9 के बीच का लिंक एक ही चाप के रूप में खींचा और देखा जा सकता है। पन्नों वाला विकल्प एक बार में एक पृष्ठ दिखाता है, जो लंबे दस्तावेज़ पर पढ़ने में बेहतर है पर एनोटेटर जब पृष्ठ-पार लिंक खींच रहा हो तब उसका दूसरा सिरा छिपा देता है।

allowed_source_labels और allowed_target_labels ही वे चीज़ें हैं जो किसी दिशानिर्देश को ऐसी चीज़ में बदलती हैं जिसे इंटरफ़ेस लागू करता है। ऊपर की तरह कॉन्फ़िगर करने पर refers_to लिंक केवल दावे से शुरू होकर केवल आकृति पर समाप्त हो सकता है, इसलिए एनोटेटर संबंध को उलटा दर्ज नहीं कर सकता। जो दिशानिर्देश सिर्फ़ किसी दस्तावेज़ में रहते हैं, उनका पालन असमान रहता है, और औज़ार जो प्रतिबंध लगाता है उसे लागू करने में कुछ नहीं लगता।

Word या Markdown फ़ाइल के लिए document डिस्प्ले काम आता है, जो शीर्षक और अनुच्छेद की संरचना बचाए रखता है और span_target स्वीकार करता है, जिससे कोई स्पैन स्कीमा सीधे उस पर इशारा कर सकता है।

स्कैन किए गए दस्तावेज़

स्कैन में टेक्स्ट लेयर नहीं होती, इसलिए टेक्स्ट एंकरों के जुड़ने को कुछ बचता ही नहीं। दो विकल्प हैं और वे अलग-अलग संग्रहों के लिए उपयुक्त हैं। क्षेत्र के हिसाब से एनोटेट करने में टेक्स्ट की ज़रूरत ही नहीं पड़ती और यह तुरंत काम करता है। OCR चालू करने पर सर्वर की ओर टेक्स्ट लेयर बनती है और टेक्स्ट एंकर संभव हो जाते हैं, जिसकी कीमत एक धीमा पास और Tesseract पर निर्भरता है।

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      display_options:
        annotation_mode: link
        ocr: auto

auto तभी OCR चलाता है जब अंतर्निहित टेक्स्ट लेयर खाली लौटती है, और यही वह सेटिंग है जो डिजिटल रूप से बनी फ़ाइलों और स्कैन को मिलाने वाले संग्रह पर इस्तेमाल होनी चाहिए। Potato ocr विकल्प को केवल लिंक मोड में पढ़ता है।

OCR का आउटपुट त्रुटिहीन नहीं होता, और ग़लत पहचाने गए शब्द से जुड़ा एनोटेशन वही त्रुटि विरासत में ले लेता है। जिस संग्रह में पहचान की गुणवत्ता ख़राब है, वहाँ क्षेत्र एंकर टेक्स्ट एंकरों से ज़्यादा टिकाऊ रिकॉर्ड देते हैं, क्योंकि किसी अंश के चारों ओर खींचा गया बॉक्स सही बना रहता है, नीचे के वर्ण चाहे जैसे भी पढ़े गए हों।

लेबल को स्रोत से मिलाकर जाँचना

हर एनोटेशन अपने साथ वह पृष्ठ लेकर लौटता है जिस पर वह बैठा है, और यही लेबल को स्रोत से मिलाकर जाँचने योग्य बनाता है। जिस समीक्षक को पृष्ठ संख्या और क्षेत्र मिला हो, वह मूल फ़ाइल खोलकर निर्णय की पुष्टि कर सकता है। जिसे जोड़ी गई स्ट्रिंग में वर्ण ऑफ़सेट मिला हो, वह आम तौर पर ऐसा नहीं कर सकता, क्योंकि उस ऑफ़सेट को दोहराने का अर्थ है उसी निष्कर्षक और उसी संस्करण को दोहराना जिसने उसे बनाया था।

यह तरीका वहाँ फ़ायदे से ज़्यादा ख़र्च कराता है जहाँ संग्रह छोटे, एक-स्तंभ वाले, डिजिटल रूप से बने और बिना संदर्भ संरचना के दस्तावेज़ों का हो, जहाँ निष्कर्षण भरोसेमंद है और पृष्ठ संख्या कुछ नहीं कहती। वहाँ निकाले गए टेक्स्ट पर सादा स्पैन एनोटेशन ज़्यादा सरल है और वही उत्तर देता है।

आगे पढ़ें