आधुनिक दस्तावेज़ चुनौतियों के लिए उन्नत OCR

डीप लर्निंग-आधारित पहचान के साथ स्कैन किए गए दस्तावेज़ों, तस्वीरों और PDF से टेक्स्ट सटीक रूप से निकालें

EasyOCR क्या है?

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

  • मल्टी-मॉडल डिटेक्शन: ResNet बैकबोन के साथ संवर्धित CRAFT-आधारित टेक्स्ट लोकलाइजेशन
  • अनुकूली पहचान: स्क्रिप्ट-विशिष्ट मॉडल (लैटिन के लिए CRNN, CJK के लिए ट्रांसफॉर्मर)
  • संदर्भ-जागरूक प्रसंस्करण: पैराग्राफ पुनर्निर्माण और पठन क्रम संरक्षण

प्रदर्शन बेंचमार्क विभिन्न दस्तावेज़ प्रकारों में सुसंगत परिणाम दिखाते हैं:

दस्तावेज़ प्रकारसटीकताप्रदर्शनहार्डवेयर
व्यावसायिक दस्तावेज़98.6%42 पेज/मिनटNVIDIA T4
मोबाइल कैप्चर छवियां94.2%28 छवियां/मिनटGoogle Colab GPU
ऐतिहासिक अभिलेखागार89.1%15 पेज/मिनटCPU क्लस्टर

OCR टेक्स्ट रिकग्निशन और निष्कर्षण के लिए EasyOCR

आर्किटेक्चर दस्तावेज़ों को तीन अनुकूलित चरणों में संसाधित करता है:

  1. पहचान: पिक्सेल-स्तर टेक्स्ट क्षेत्र विभाजन
  2. मान्यता: भाषा मॉडलिंग के साथ अनुक्रम पूर्वानुमान
  3. पुनर्निर्माण: स्थानिक संबंध मानचित्रण
GitHub

गिटहब आँकड़े

नाम:
भाषा:
सितारे:
कांटे:
लाइसेंस:
रिपॉजिटरी को अंतिम बार अद्यतन किया गया था

मुख्य तकनीकी क्षमताएं

1. उन्नत टेक्स्ट डिटेक्शन

डिटेक्शन सबसिस्टम में शामिल हैं:

  • वर्ण-स्तरीय हीटमैप जनरेशन
  • मनमाने आकार के टेक्स्ट क्षेत्रों को संभालना
  • बहु-अभिविन्यास समर्थन (0-360°)
  • पृष्ठभूमि शोर दमन

2. हाइब्रिड रिकग्निशन सिस्टम

मान्यता मॉडल स्क्रिप्ट प्रकार के अनुसार अनुकूलित:

  • लैटिन/सिरिलिक: 7 CNN परतों + BiLSTM के साथ CRNN
  • चीनी/जापानी/कोरियाई: 12 ध्यान हेड के साथ ट्रांसफॉर्मर
  • अरबी/हिब्रू: कस्टम टोकनाइजेशन के साथ दाएं-से-बाएं BiLSTM

3. उद्योग सुविधाएँ

  • स्वचालित गुणवत्ता अनुमान
  • कॉन्फ़िगर करने योग्य सटीकता/रिकॉल ट्रेडऑफ़
  • हार्डवेयर-जागरूक संसाधन आवंटन

स्थापना और कॉन्फ़िगरेशन

सिस्टम आवश्यकताएँ

घटकविकासउत्पादन
पायथन3.6+3.8+
मेमोरी8GB16GB+
GPUवैकल्पिकNVIDIA (CUDA 11.8+)

स्थापना विकल्प

मूल स्थापना


pip install easyocr  # केवल CPU निर्भरताएँ स्थापित करता है

GPU समर्थन (लिनक्स/विंडोज)


pip install easyocr torch torchvision --index-url https://download.pytorch.org/whl/cu118

डॉकर (उत्पादन तैनाती)


docker run -it --gpus all -v $(pwd):/data \
  -e LANG_LIST="en,hi,fr" \
  jaidedai/easyocr

व्यावहारिक कार्यान्वयन उदाहरण

1. उत्पादन दस्तावेज़ पाइपलाइन

प्रीप्रोसेसिंग और सत्यापन के साथ पूर्ण OCR वर्कफ़्लो:

उत्पादन-तैयार प्रसंस्करण


from easyocr import Reader
import cv2
import numpy as np

class DocumentOCR:
    def __init__(self, languages=['en']):
        self.reader = Reader(languages, gpu=True)
        
    def preprocess(self, image):
        # कंट्रास्ट एन्हांसमेंट
        lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
        l, a, b = cv2.split(lab)
        clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8))
        limg = cv2.merge([clahe.apply(l), a, b])
        return cv2.cvtColor(limg, cv2.COLOR_LAB2BGR)
    
    def process(self, image_path):
        img = cv2.imread(image_path)
        processed = self.preprocess(img)
        results = self.reader.readtext(processed,
                                    batch_size=4,
                                    paragraph=True,
                                    min_size=50,
                                    text_threshold=0.8)
        return {
            'text': [r[1] for r in results],
            'confidence': np.mean([r[2] for r in results])
        }

# उपयोग
ocr = DocumentOCR(languages=['en','hi'])
result = ocr.process('कानूनी_अनुबंध.jpg')
print(f"औसत सटीकता: {result['confidence']:.2%}")

2. बैच इनवॉइस प्रोसेसिंग

कई इनवॉइस प्रारूपों से प्रमुख फ़ील्ड निकालना:

इनवॉइस डेटा निष्कर्षण


import easyocr
import re
from pathlib import Path

reader = easyocr.Reader(['hi'])

INVOICE_PATTERNS = {
    'invoice_no': r'इनवॉइस\s*नंबर[:#]?\s*([A-Z0-9-]+)',
    'date': r'तारीख[:]?\s*(\d{2}[/-]\d{2}[/-]\d{4})',
    'amount': r'कुल\s*देय[:]?\s*\$?(\d+\.\d{2})'
}

def process_invoices(folder):
    results = []
    for invoice in Path(folder).glob('*.pdf'):
        text = '\n'.join(reader.readtext(str(invoice), detail=0))
        extracted = {field: re.search(pattern, text) 
                    for field, pattern in INVOICE_PATTERNS.items()}
        results.append({
            'file': invoice.name,
            'data': {k: v.group(1) if v else None 
                     for k, v in extracted.items()}
        })
    return results
invoices_data = process_invoices('/इनवॉइस/')

प्रदर्शन अनुकूलन

GPU त्वरण

  • बैच प्रोसेसिंग: इष्टतम बैच आकार (GPU मेमोरी के आधार पर 4-16)
  • मेमोरी प्रबंधन: बड़े दस्तावेज़ों के लिए स्वचालित विभाजन
  • मिश्रित परिशुद्धता: टेंसर कोर के साथ FP16 अनुमान

सटीकता ट्यूनिंग

  • कंट्रास्ट थ्रेशोल्ड: खराब गुणवत्ता वाली स्कैन के लिए contrast_ths समायोजित करें
  • टेक्स्ट आकार फ़िल्टरिंग: छोटे टेक्स्ट को अनदेखा करने के लिए min_size सेट करें
  • भाषा प्राथमिकता: अपेक्षित आवृत्ति के अनुसार भाषाओं को क्रमबद्ध करें

इसी तरह के उत्पादों

 Hindi