Skip to content

PDF एनोटेशन

Potato में pdf डिस्प्ले प्रकार से PDF एनोटेट करें, जिसमें स्पैन हाइलाइटिंग, पेज पर बाउंडिंग बॉक्स, पेज-पार लिंकिंग और स्कैन की गई फ़ाइलों के लिए OCR शामिल हैं।

pdf डिस्प्ले ब्राउज़र में PDF.js की मदद से PDF रेंडर करता है और एनोटेशन सतह को पहले से निकाले गए टेक्स्ट पर नहीं, बल्कि रेंडर हुए पेज पर रखता है। एनोटेटर असली दस्तावेज़ देखता है, जिसके कॉलम, टेबल, आकृतियाँ और पेज-ब्रेक ज्यों के त्यों रहते हैं, और वह उसी जगह लेबल लगाता है। इस डिस्प्ले को एक ही अनिवार्य कुंजी चाहिए, यानी वह फ़ील्ड जिसमें PDF का पथ या URL है, और बाकी सब कुछ डिस्प्ले विकल्प है।

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      label: "Document"
      display_options:
        view_mode: scroll
        max_height: 760
        zoom: page-width

view_mode scroll, paginated या side-by-side लेता है। लगातार स्क्रॉल हर पेज को एक ही कंटेनर में जमा देता है, जो तब मायने रखता है जब किसी एनोटेशन को पेज-ब्रेक के पार जाना पड़े। पेजिनेटेड व्यू नेविगेशन नियंत्रणों के साथ एक बार में एक पेज दिखाता है और लंबे दस्तावेज़ों के लिए ठीक रहता है, जहाँ एनोटेटर पेज-दर-पेज काम करता है।

तीन एनोटेशन मोड

annotation_mode तय करता है कि एनोटेटर क्या बना सकता है, और यही वह विकल्प है जो कार्य की शक्ल नहीं, बल्कि कार्य को ही बदल देता है। डिफ़ॉल्ट span है।

मोडएनोटेटर क्या करता हैकिससे जुड़ा है
spanटेक्स्ट चुनता है और उस पर लेबल लगाता हैPDF.js की टेक्स्ट लेयर
bounding_boxपेज पर कहीं भी एक बॉक्स बनाता हैपेज निर्देशांक
linkपहले एंकर लगाता है, फिर उन्हें जोड़ता हैटेक्स्ट स्पैन और पेज क्षेत्र

स्पैन मोड इस पर निर्भर है कि PDF में टेक्स्ट लेयर हो, जो वर्ड प्रोसेसर या टाइपसेटिंग सिस्टम से बने किसी भी PDF में होती है और स्कैन में नहीं होती। बाउंडिंग-बॉक्स मोड इस पर निर्भर नहीं है, इसलिए स्कैन किए गए पेज को बिना किसी टेक्स्ट निष्कर्षण के भी क्षेत्र के हिसाब से लेबल किया जा सकता है।

चूँकि pdf डिस्प्ले स्पैन को दूसरे डिस्प्ले वाले .text-content रैपर के बजाय PDF.js टेक्स्ट लेयर के ज़रिए एंकर करता है, यह span_target फ़्लैग स्वीकार नहीं करता। स्पैन एनोटेशन फिर भी काम करता है, PDF की अपनी टेक्स्ट लेयर के माध्यम से।

पेज-पार लिंकिंग

लिंक मोड उन संबंधों के लिए है जो पेजों के आर-पार जाते हैं, जैसे पेज 2 पर कोई दावा जो पेज 9 की किसी आकृति पर टिका हो। एनोटेटर पहले एंकर चिह्नित करता है, फिर उनके बीच टाइप किए हुए लिंक खींचता है, और Potato एंकरों और लिंकों को अलग-अलग स्कीमा नामों के तहत दर्ज करता है।

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      label: "Document"
      display_options:
        annotation_mode: link
        view_mode: scroll
        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
            color: "#dc2626"
            allowed_source_labels: [claim]
            allowed_target_labels: [figure]

allowed_source_labels और allowed_target_labels यह सीमित करते हैं कि कोई लिंक प्रकार किन एंकरों को जोड़ सकता है, और इसी तरह कोई दिशानिर्देश ऐसी चीज़ बन जाता है जिसे इंटरफ़ेस लागू करता है, न कि ऐसी चीज़ जिसे एनोटेटर को याद रखना पड़े। ऊपर की तरह कॉन्फ़िगर किया गया refers_to लिंक केवल claim से शुरू हो सकता है और केवल figure पर खत्म हो सकता है, इसलिए किसी आकृति से वापस किसी दावे तक खींचा गया लिंक अस्वीकार कर दिया जाता है। same_as जैसे सममित संबंध के लिए directed: false सेट करें।

एंकर दो तरह के होते हैं और दोनों को अलग-अलग बंद किया जा सकता है। enable_text_anchors किसी टेक्स्ट स्पैन को हाइलाइट करने देता है, और enable_region_anchors क्षेत्र बॉक्स बनाने देता है, जो किसी आकृति या टेबल के लिए ज़रूरी है। एक पूरा हल किया हुआ उदाहरण अपस्ट्रीम में examples/advanced/pdf-link-scroll/ पर मिलता है।

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

ocr डिफ़ॉल्ट रूप से बंद है, और Potato इसे केवल लिंक मोड में पढ़ता है। सेट होने पर शब्द सर्वर की ओर निकाले जाते हैं और उनसे क्लाइंट टेक्स्ट लेयर बनाई जाती है, जिससे बिना एम्बेडेड टेक्स्ट वाला स्कैन भी टेक्स्ट एंकर ले सकता है। यह विकल्प false, true या auto लेता है, और Potato किसी भी अन्य मान को अस्वीकार कर देता है।

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      display_options:
        annotation_mode: link
        ocr: auto
        ocr_dpi: 200
        ocr_lang: eng

तीनों सेटिंग्स में फ़र्क इस बात का है कि पास कब चलता है। false अकेले एम्बेडेड टेक्स्ट लेयर का उपयोग करता है, true हमेशा OCR चलाता है, और auto केवल तभी OCR पर लौटता है जब एम्बेडेड टेक्स्ट लेयर खाली लौटे। मिश्रित कॉर्पस पर auto बेहतर है, क्योंकि OCR धीमा है और इसके लिए Tesseract इंस्टॉल होना चाहिए। ocr_dpi यह नियंत्रित करता है कि OCR के पढ़ने से पहले हर पेज किस रिज़ॉल्यूशन पर रास्टराइज़ किया जाए, और इसे बढ़ाने से हर पेज पर समय लगता है। ocr_lang Tesseract भाषा कोड लेता है और डिफ़ॉल्ट रूप से eng है।

डिस्प्ले विकल्प

विकल्पडिफ़ॉल्टप्रभाव
view_modescrollscroll, paginated या side-by-side
max_height700कंटेनर की ऊँचाई, पिक्सेल में
max_widthकोई नहींकंटेनर की चौड़ाई
text_layertrueटेक्स्ट चयन सक्षम करता है
show_page_controlstrueपेज नेविगेशन नियंत्रण
initial_page1सबसे पहले दिखाया जाने वाला पेज
zoomautoauto, page-fit, page-width या कोई प्रतिशत
annotation_modespanspan, bounding_box या link
bbox_min_size10स्वीकार किया जाने वाला सबसे छोटा बॉक्स, पिक्सेल में
bbox_colorsकोई नहींप्रति लेबल बॉक्स रंग
show_bbox_labelstrueबॉक्सों पर लेबल बनाता है
thumbnail_sidebartrueपेजिनेटेड व्यू में पेज थंबनेल
enable_text_anchorstrueटेक्स्ट स्पैन लिंक एंकर के रूप में उपयोग योग्य
enable_region_anchorstrueक्षेत्र बॉक्स लिंक एंकर के रूप में उपयोग योग्य
anchor_schemapdf_anchorsएंकरों पर दर्ज किया गया स्कीमा
link_schemapdf_linksलिंकों पर दर्ज किया गया स्कीमा
ocrfalsefalse, true या auto
ocr_dpi200OCR रेंडरिंग रिज़ॉल्यूशन
ocr_langengTesseract भाषा कोड

Word और Markdown फ़ाइलें

DOCX या Markdown फ़ाइल इसके बजाय document डिस्प्ले का उपयोग करती है, जो दस्तावेज़ की शीर्षक और अनुच्छेद संरचना बनाए रखता है और span_target स्वीकार भी करता है। यह annotation_mode को span या bounding_box के रूप में पढ़ता है, और show_outline मुख्य भाग के शीर्षकों से विषय-सूची बनाता है। Potato रेंडर किए गए मार्कअप को एनोटेटर तक पहुँचने से पहले एक अनुमति-सूची से गुज़ारता है, इसलिए निष्पादन योग्य टैग वाला कोई कॉर्पस फ़ील्ड चलाया नहीं जाता, बल्कि हटा दिया जाता है।

yaml
instance_display:
  fields:
    - key: report
      type: document
      label: "Report"
      display_options:
        show_outline: true
        max_height: 600

आगे पढ़ें