यदि मैं पीडीएफ के सामग्री तालिका पृष्ठ पर क्लिक कर सकता हूं लेकिन निष्कर्षण के बाद स्तर खो देता हूं तो मुझे क्या करना चाहिए?

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

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

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

यदि पीडीएफ सामग्री तालिका पृष्ठ पर क्लिक किया जा सकता है, लेकिन निष्कर्षण के बाद पदानुक्रम खो जाता है तो मुझे क्या करना चाहिए? एक वाक्य का निष्कर्ष

पहले सत्यापित करें, फिर लिखें: बुकमार्क स्तर को पहले जांचा जाना चाहिए, पहले आइटम को पहले स्तर के रूप में माना जाता है, बाद के स्तर पिछले आइटम प्लस एक से अधिक नहीं होने चाहिए, और आउट-ऑफ-बाउंड पेज नंबर वाली प्रविष्टियां नहीं लिखी जाएंगी।

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

निष्कर्षण परिणाम का स्तर क्यों गिर जाता है?

get_toc() डिफ़ॉल्ट रूप से [level, title, page] त्रिगुणों की सूची आउटपुट करता है। उनमें से, page 1 से शुरू होने वाली भौतिक पृष्ठ संख्या है, और level केवल नेस्टिंग गहराई का प्रतिनिधित्व करता है और निरंतरता या वैधता की गारंटी नहीं देता है।

यदि स्रोत पीडीएफ स्कैन मर्ज टूल द्वारा उत्पन्न किया गया था, तो सामान्य समस्याओं में शामिल हैं:

  • स्तर की छलांग: उदाहरण के लिए, 1 से 3 तक सीधे कूदें
  • पृष्ठ संख्या अपवाद: पृष्ठ संख्या 0 है या पृष्ठों की कुल संख्या से अधिक है
  • शीर्षक अपवाद: शीर्षक में नियंत्रण वर्ण हैं

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

स्व-निहित रचना उदाहरण

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

import pymupdf
def validate(rows, pages):
    previous = 0
    for level, title, page in rows:
        if type(level) is not int or level < 1 or level > previous + 1:
            raise ValueError("invalid hierarchy")
        if type(page) is not int or not 1 <= page <= pages:
            raise ValueError("invalid destination")
        if not isinstance(title, str) or not title.strip():
            raise ValueError("empty title")
        previous = level
    return rows
with pymupdf.open() as doc:
    for _ in range(3):
        doc.new_page()
    rows = [[1, "Chapter", 1], [2, "Section", 2], [1, "Appendix", 3]]
    doc.set_toc(validate(rows, doc.page_count))
    assert doc.get_toc() == rows
    assert len(doc.get_toc()) == 3
    for bad in [[[2, "Bad", 1]], [[1, "Bad", 99]], [[1, "", 1]]]:
        try:
            validate(bad, doc.page_count)
        except ValueError:
            pass
        else:
            raise AssertionError("invalid outline accepted")

कानूनी और अवैध इनपुट के लिए प्रसंस्करण नियम

सही इनपुट को संतुष्ट करना चाहिए: [1, doc.page_count] श्रेणी में निरंतर स्तरों और पृष्ठ संख्याओं के साथ त्रिगुणों की एक सूची। उदाहरण के लिए, [[1, "引言", 1], [2, "背景", 2], [1, "方法", 5]] कानूनी है, दूसरा स्तर पहले स्तर के बाद दिखाई देता है, और पीडीएफ रूपरेखा सिंटैक्स के अनुरूप है।

सामान्य गलत इनपुट में शामिल हैं:

  • स्तर 0 या नकारात्मक है
  • पेज संख्या 0 है
  • पृष्ठों की संख्या कुल पृष्ठों की संख्या से अधिक है
  • शीर्षक एक खाली स्ट्रिंग है या इसमें केवल रिक्त स्थान वर्ण हैं

इन स्थितियों के लिए लेख में दी गई विधियाँ इस प्रकार हैं:

  1. अमान्य पृष्ठ क्रमांक वाली प्रविष्टियाँ छोड़ें और एक चेतावनी लॉग करें।
  2. संरचनात्मक अखंडता बनाए रखने के लिए खाली शीर्षकों के लिए [untitled] जैसे प्लेसहोल्डर रखें।
  3. एक भी त्रुटि के कारण संपूर्ण निर्देशिका की पार्सिंग में बाधा न डालें।

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

📊 कोर तुलना

विभिन्न दस्तावेज़ स्थितियों में, get_toc() के परिणाम और सुझाई गई प्रसंस्करण विधियाँ अलग-अलग हैं:

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

स्वीकृति मानदंड और मैन्युअल समीक्षा सीमाएँ

निम्न तालिका केवल पीडीएफ कैटलॉग मेटाडेटा के निष्कर्षण पर केंद्रित है:

घटनाओं का निरीक्षण करेंप्रसंस्करण निर्णयक्या स्वचालन लागू है
पृष्ठ संख्या 0 या कुल पृष्ठों की संख्या से अधिक हैप्रविष्टि को त्यागें और इसे लॉग करेंहाँ
स्तर 1 से कम या गैर-पूर्णांक हैउपरोक्त नियमों के अनुसार प्रक्रिया करें (पिछले निर्देश देखें)हाँ
शीर्षक पूर्णतः रिक्त या शुद्ध प्रतीक है[untitled] से बदलेंहाँ
लेवल जंप (जैसे 1 से 3)मूल परत रखें और मध्यवर्ती परतें न जोड़ेंहाँ (संरचना कानूनी है)
एक ही शीर्षक अनेक भिन्न पृष्ठ संख्याओं से मेल खाता हैअस्पष्ट के रूप में चिह्नित करें, मैन्युअल में स्थानांतरित करेंनहीं
प्रविष्टियों की संख्या 200 से अधिक है और कोई स्तर परिवर्तन नहीं हैयदि ओसीआर की गलत पहचान का संदेह है, तो मैन्युअल सत्यापन की आवश्यकता है।नहीं
इसमें एक बाहरी यूआरआई या जावास्क्रिप्ट क्रिया शामिल हैगैर-पेज जंप आइटम फ़िल्टर करेंहाँ (सुरक्षा नीति)
EPUB जैसे पुनर्व्यवस्थित दस्तावेज़, पृष्ठ संख्याएँ हैं (अध्याय, पीएनओ)यह पृष्ठ संख्या सत्यापन तर्क लागू नहीं हैनहीं (विशेष प्रसंस्करण की आवश्यकता है)

यह ध्यान दिया जाना चाहिए कि कोड प्रदर्शन केवल संरचना की वैधता की पुष्टि करता है, और यह सत्यापित करने के लिए कि छलांग सटीक है या नहीं, एंड-टू-एंड प्रभाव को रेंडरिंग के साथ जोड़ा जाना चाहिए।

🎯कौन सा तरीका आपके लिए उपयुक्त है?

यदि आपको बैचों में निर्देशिकाएँ निकालने की आवश्यकता है

पहले get_toc() परिणाम पर संरचनात्मक सत्यापन करें, फिर इसे बाद की प्रक्रिया में लिखें, और समीक्षा के लिए लॉग रखें।

यदि आपके पीडीएफ में दृश्य रूप से सामग्री की एक तालिका है लेकिन निष्कर्षण खाली है

get_toc() को बार-बार पुनः प्रयास न करें, इसके बजाय टेक्स्ट लेआउट विश्लेषण प्रसंस्करण का उपयोग करें।

यदि आपकी निर्देशिका प्रविष्टि एक ही नाम से विभिन्न पृष्ठों पर दिखाई देती है

इन प्रविष्टियों को मैन्युअल सत्यापन में बदलें और स्वचालित रूप से किसी पृष्ठ संख्या का चयन न करें।

यदि आप अपना दस्तावेज़ अनुवाद प्रक्रिया के लिए सबमिट कर रहे हैं

विभाजन संबंधी भ्रम से बचने के लिए अनुवाद करने से पहले पुष्टि करें कि निर्देशिका संरचना और पृष्ठ संख्याएँ सही हैं।

❓ अक्सर पूछे जाने वाले प्रश्न (एफएक्यू)

1. पेज नंबर 1 से क्यों शुरू होता है, जबकि पेज इंडेक्स आमतौर पर 0 से शुरू होता है?

बुकमार्क पेज नंबर भौतिक पेज नंबर होते हैं जो 1 से शुरू होते हैं, जबकि PyMuPDF जैसे पुस्तकालयों में पेज इंडेक्स आमतौर पर 0 से शुरू होते हैं। कनवर्ट करते समय आपको इस अंतर पर ध्यान देने की आवश्यकता है, अन्यथा पेज नंबर गलत तरीके से संरेखित हो जाएंगे।

2. यदि get_toc() एक खाली सूची लौटाता है, तो क्या इसका मतलब यह है कि फ़ाइल में कुछ गड़बड़ है?

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

3. जब पृष्ठ संख्या सीमा पार कर जाती है, तो क्या लाइब्रेरी सीधे त्रुटि की रिपोर्ट करेगी?

नहीं होगा। इस आलेख में वास्तविक माप से पता चला कि PyMuPDF एक चेतावनी मुद्रित करेगा लेकिन पृष्ठ संख्या सीमा पार करने पर अपवाद नहीं फेंकेगा, इसलिए सत्यापन फ़ंक्शन को सक्रिय रूप से फ़िल्टर करना होगा।

4. क्या आपको लेवल जंप के लिए बीच की परतों को भरने की ज़रूरत है (जैसे कि सीधे 1 से 3 तक जाना)?

लेख में सुझाव मूल पदानुक्रम को बनाए रखने और मध्यवर्ती परतें नहीं जोड़ने का है, क्योंकि यह संरचना अभी भी कानूनी है।

📝सारांश

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

इसे अभी आज़माएं: मूल लेआउट को बरकरार रखते हुए अनुवाद शुरू करने के लिए दस्तावेज़ अपलोड करें

संदर्भ और अगले चरण

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

दस्तावेज़ अनुवाद के लिए इस चेकलिस्ट का उपयोग करें

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

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

अद्यतन 2026-11-15