क्या पीडीएफ को ओसीआर की आवश्यकता है? पूर्ण पुनः-पहचान के बजाय पृष्ठ-दर-पृष्ठ प्रीफ़्लाइट करने के लिए PyMuPDF का उपयोग करें

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

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

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

एक वाक्य का निष्कर्ष

यह निर्णय लेने की कोई आवश्यकता नहीं है कि पीडीएफ को ओसीआर की आवश्यकता है या नहीं। पृष्ठ-दर-पृष्ठ पूर्व-जाँच करने के लिए PyMuPDF का उपयोग करें और केवल उन्हीं पृष्ठों को OCR को भेजें जिन्हें वास्तव में पहचानने की आवश्यकता है।

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

नोट: चित्र में सामग्री नीचे दिए गए कोड द्वारा उत्पन्न संश्लेषित पीडीएफ से आती है, न कि ग्राहक फ़ाइल से, न ही ओमनीडॉक इंटरफ़ेस से। छवि पृष्ठ पर पाठ रेखापुंज पिक्सेल है; टेक्स्ट पेज पर टेक्स्ट में वास्तविक टेक्स्ट परत होती है।

तय करें कि पहले क्या जांचना है

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

अवलोकनइस लेख का विचलनअभी भी ध्यान देने की जरूरत है
कम से कम 40 गैर-व्हाट्सएप वर्णTEXT_CANDIDATEछिपी हुई ख़राब OCR परतों में भी बहुत सारे शब्द हो सकते हैं
40 से कम शब्द और कम से कम 70% को कवर करने वाली एक छविOCR_CANDIDATEशुद्ध तस्वीरें भी शर्तों को पूरा करेंगी, ओसीआर सार्थक नहीं हो सकता है
बाकी मामलेREVIEWश्वेत स्थान, वेक्टर प्रकार, विरल शीर्षक और जटिल पहेलियाँ सभी यहाँ संभव हैं

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

पूर्ण चलने योग्य उदाहरण

नमूना PyMuPDF==1.28.0 का उपयोग करता है, Tesseract पर निर्भर नहीं करता है, और किसी भी ऑनलाइन OCR या अनुवाद सेवाओं को कॉल नहीं करता है। इसे example.py के रूप में सहेजें और एक खाली निर्देशिका में चलाएँ। इसके द्वारा बनाया गया फ़ाइल नाम routing-fixture.pdf तय किया गया है। कृपया वास्तविक परियोजनाओं में इनपुट फ़ाइल को अधिलेखित न करें।

import json
import pymupdf

def inspect_page(page):
    chars = len("".join(page.get_text().split()))
    bounds = page.cropbox
    # 图片坐标与文本坐标都是未旋转坐标;不要混用旋转后的 page.rect。
    bounds = pymupdf.Rect(0, 0, bounds.width, bounds.height)
    ratios = []
    for image in page.get_image_info():
        rect = pymupdf.Rect(image["bbox"]) & bounds
        ratios.append(max(0, rect.get_area()) / bounds.get_area())
    largest = max(ratios, default=0.0)
    route = ("TEXT_CANDIDATE" if chars >= 40 else
             "OCR_CANDIDATE" if largest >= 0.70 else "REVIEW")
    return {"page": page.number + 1, "chars": chars,
            "largest_image_ratio": round(largest, 3), "route": route}

with pymupdf.open() as source:
    page = source.new_page(width=360, height=480)
    page.insert_text((28, 60), "Sample invoice 2026-09-26", fontsize=16)
    page.insert_text((28, 100), "Quantity 12   Unit price USD 15.00", fontsize=12)
    page.insert_text((28, 132), "Amount USD 180.00   Checked manually", fontsize=12)
    scan = page.get_pixmap(matrix=pymupdf.Matrix(2, 2)).tobytes("png")
    page = source.new_page(width=360, height=480)
    page.insert_image(page.rect, stream=scan)
    source.new_page(width=360, height=480)
    source.save("routing-fixture.pdf")

with pymupdf.open("routing-fixture.pdf") as pdf:
    result = [inspect_page(page) for page in pdf]
    assert [r["route"] for r in result] == [
        "TEXT_CANDIDATE", "OCR_CANDIDATE", "REVIEW"]
    assert result[1]["chars"] == 0
    assert result[1]["largest_image_ratio"] == 1.0
    pdf[1].set_rotation(90)
    assert inspect_page(pdf[1])["route"] == "OCR_CANDIDATE"
print(json.dumps(result, indent=2))

ओसीआर तक पहुंचने पर, टेक्स्टपेज को सफलता चिह्न के बजाय कैश किया जाता है।

PyMuPDF का OCR इंटरफ़ेस page.get_textpage_ocr(...) है। Tesseract और संबंधित भाषा डेटा को अलग से तैयार करने की आवश्यकता है। टेक्स्टपेज प्राप्त करने के बाद, उसी पेज की बार-बार पहचान से बचने के लिए इसे बाद के निष्कर्षण के दौरान textpage पैरामीटर के रूप में पारित किया जाना चाहिए। विशिष्ट स्थापना विधियों और मापदंडों के लिए कृपया PyMuPDF OCR दस्तावेज़ीकरण देखें।

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

तीन प्रकार की गलतियाँ जो सबसे आसानी से छूट जाती हैं

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

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

दस्तावेज़ को बंद करना और फिर पेज का उपयोग करना अमान्य ऑब्जेक्ट उत्पन्न करेगा। कृपया with pymupdf.open(...) का दायरा बनाए रखें और फ़ाइल जारी करने से पहले प्रीफ़्लाइट, रेंडरिंग और निष्कर्षण पूरा करें। निर्देशांक, छवि जानकारी और पृष्ठ जीवन चक्र के बारे में अधिक जानकारी के लिए, कृपया PyMuPDF Page API देखें।

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

डायवर्सन से अनुवाद वर्कफ़्लो दर्ज करें

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

📊 कोर तुलना

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

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

अगर आप……

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

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

1. टेक्स्ट को होमपेज पर कॉपी किया जा सकता है। क्या मैं संपूर्ण PDF का OCR छोड़ सकता हूँ?

नहीं कर सकता। सिर्फ इसलिए कि होमपेज पर टेक्स्ट परत है, इसका मतलब यह नहीं है कि बाद के पेजों पर भी यह होगी, और इसे पेज दर पेज आंका जाना चाहिए।

2. छवि क्षेत्रों को सीधे क्यों नहीं जोड़ा जाता?

ओवरलैपिंग छवियों के क्षेत्रों को जोड़ने से कवरेज का अनुमान अधिक हो जाएगा। यह आलेख सबसे बड़ी तस्वीर का उपयोग करता है, इसलिए एक साथ सिले हुए कई चित्रों वाला स्कैन किया गया पृष्ठ समीक्षा में आ सकता है, जो एक सीमा है जिसे जानबूझकर बरकरार रखा गया है।

3. यदि वर्णों की संख्या 40 तक पहुँच जाती है, तो क्या इसका मतलब यह है कि पाठ की गुणवत्ता में कोई समस्या नहीं है?

इस तरह से निष्कर्ष नहीं निकाला जा सकता. छिपी हुई ख़राब OCR परतों में भी बहुत सारे शब्द हो सकते हैं, इसलिए अभी भी प्रतिस्थापन वर्णों, डुप्लिकेट लाइनों और स्पॉट चेक कुंजी फ़ील्ड की जाँच करें।

4. वेक्टर पथ द्वारा खींचे गए पाठ को कैसे संसाधित किया जाना चाहिए?

वे न तो पाठ हैं और न ही छवियाँ, समीक्षा में प्रवेश करें, मनुष्यों द्वारा उनका मूल्यांकन किया जाता है, और उन्हें स्वचालित रूप से रिक्त के रूप में चिह्नित नहीं किया जाना चाहिए या चुपचाप हटा नहीं दिया जाना चाहिए।

5. क्या स्थानीय कार्यक्रम ओमनीडॉक खाते पर निर्भर करता है?

आश्रित नहीं. इस लेख के लिए स्थानीय कार्यक्रम स्वतंत्र रूप से चलता है और किसी भी ऑनलाइन ओसीआर या अनुवाद सेवाओं को कॉल नहीं करता है।

📝सारांश

पहले साक्ष्य को पृष्ठ दर पृष्ठ छोड़ें, और फिर तय करें कि ओसीआर करना है या नहीं। अनिश्चित परिणामों को सफलता के रूप में छिपाने की तुलना में अनिश्चित पृष्ठों को कतार में छोड़ना अधिक उपयोगी है।

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

अद्यतन 2026-11-15