1. Products
  2.   Parser
  3.   Python
  4.   EasyOCR
 
  

Pažangus OCR šiuolaikiniams dokumentų iššūkiams

Tiksliai išgaukite tekstą iš nuskaitytų dokumentų, nuotraukų ir PDF naudodami giluminio mokymo technologijas

Kas yra EasyOCR?

EasyOCR yra atviro kodo optinio simbolių atpažinimo (OCR) biblioteka, kurią sukūrė Jaided AI, skirta tekstui išgauti iš vaizdų ir nuskaitytų dokumentų su dideliu tikslumu. Sukurta naudojant PyTorch, ji palaiko daugiau nei 80 kalbų, įskaitant lotynų, kinų, arabų ir kitas. EasyOCR žinoma dėl savo paprastumo - reikia tik kelių kodo eilučių, kad būtų galima ją naudoti, todėl ji puikiai tinka kūrėjams ir mokslininkams, dirbantiems su teksto atpažinimo projektais. Turėdama iš anksto apmokytus giluminio mokymo modelius, ji gali efektyviai aptikti ir atpažinti tekstą įvairiais šriftais, rankraščio stiliais ir sudėtingame fone. Nesvarbu, ar tai automatizuotas dokumentų apdorojimas, valstybinio numerio atpažinimas, ar teksto išgavimas iš vaizdų - EasyOCR siūlo galingą ir lengvą sprendimą. Sistema apima:

  • Daugelio modelių aptikimas: CRAFT pagrįstas teksto lokalizavimas su ResNet pagrindu
  • Adaptyvus atpažinimas: Rašto specifiniai modeliai (CRNN lotynų kalboms, Transformer CJK kalboms)
  • Kontekstiškai sąmoningas apdorojimas: Pastraipų rekonstravimas ir skaitymo eilės išsaugojimas

Našumo rezultatai rodo nuoseklius rezultatus tarp skirtingų dokumentų tipų:

Dokumento tipasTikslumasSpartaAparatinė įranga
Verslo dokumentai98,6%42 puslapiai/minNVIDIA T4
Mobiliojo telefono nuotraukos94,2%28 vaizdai/minGoogle Colab GPU
Istoriniai archyvai89,1%15 puslapių/minCPU grupė

EasyOCR teksto atpažinimas ir išgavimas

Architektūra apdoroja dokumentus trimis optimizuotais etapais:

  1. Aptikimas: Teksto sričių segmentavimas pikselių lygmenyje
  2. Atpažinimas: Sekų prognozavimas su kalbos modeliavimu
  3. Rekonstravimas: Erdvinių santykių atvaizdavimas
GitHub

GitHub Stats

Name:
Language:
Stars:
Forks:
License:
Repository was last updated at

Pagrindinės techninės galimybės

1. Pažangus teksto aptikimas

Aptikimo posistemė apima:

  • Simbolių lygio šiluminio žemėlapio generavimą
  • Savivaldos formos teksto sričių apdorojimą
  • Daugiakryptį palaikymą (0-360°)
  • Fono triukšmo slopinimą

2. Hibridinė atpažinimo sistema

Atpažinimo modeliai optimizuoti pagal rašto tipą:

  • Lotynų/Kirilicos: CRNN su 7 CNN sluoksniais + BiLSTM
  • Kinų/Japonų/Korėjiečių: Transformer su 12 dėmesio galvų
  • Arabų/Ivritas: Iš dešinės į kairę BiLSTM su specialiu žetonizavimu

3. Įmonių funkcijos

  • Automatinis kokybės įvertinimas
  • Konfigūruojamas tikslumo/atšaukimo balansas
  • Aparatinės įrangos sąmoningas išteklių paskirstymas

Diegimas ir konfigūravimas

Sistemos reikalavimai

KomponentasPlėtraGamyba
Python3.6+3.8+
Atmintis8GB16GB+
GPUNeprivalomaNVIDIA (CUDA 11.8+)

Diegimo parinktys

Pagrindinis diegimas


pip install easyocr  # Diegia tik CPU palaikymą

GPU palaikymas (Linux/Windows)


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

Docker (Gamybinis diegimas)


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

Praktiniai įgyvendinimo pavyzdžiai

1. Gamybinis dokumentų tinklas

Pilnas OCR darbotvarkė su išankstiniu apdorojimu ir patikrinimu:

Gamybai parinktas apdorojimas


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):
        # Kontrasto didinimas
        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])
        }

# Naudojimas
ocr = DocumentOCR(languages=['en','fr'])
result = ocr.process('legal_contract.jpg')
print(f"Vidutinis patikimumas: {result['confidence']:.2%}")

2. Sąskaitų faktūrų grupinis apdorojimas

Pagrindinių laukų išgavimas iš įvairių sąskaitų faktūrų formatų:

Sąskaitų faktūrų duomenų išgavimas


import easyocr
import re
from pathlib import Path

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

INVOICE_PATTERNS = {
    'invoice_no': r'Invoice\s*Number[:#]?\s*([A-Z0-9-]+)',
    'date': r'Date[:]?\s*(\d{2}[/-]\d{2}[/-]\d{4})',
    'amount': r'Total\s*Due[:]?\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('/invoices/')

Našumo optimizavimas

GPU pagreitinimas

  • Grupinis apdorojimas: Optimalūs grupės dydžiai (4-16 priklausomai nuo GPU atminties)
  • Atminties valdymas: Automatinis didelių dokumentų skaidymas
  • Mišrūs tikslumai: FP16 išvados su Tensor branduoliais

Tikslumo derinimas

  • Kontrasto slenksčiai: Reguliuokite contrast_ths prastos kokybės nuskaitymams
  • Teksto dydžio filtravimas: Nustatykite min_size, kad ignoruotumėte mažą tekstą
  • Kalbų prioritetai: Išdėstykite kalbas pagal tikėtiną paplitimą

Similar Products

 Lithuanian