Pokročilé OCR pro moderní výzvy dokumentů

Přesné extrahování textu ze skenovaných dokumentů, fotografií a PDF pomocí hlubokého učení

Co je EasyOCR?

EasyOCR je open-source knihovna pro optické rozpoznávání znaků (OCR) vyvinutá společností Jaided AI, určená pro extrakci textu z obrázků a skenovaných dokumentů s vysokou přesností. Postavená na PyTorch, podporuje více než 80 jazyků včetně latinky, čínštiny, arabštiny a dalších. EasyOCR je známý pro svou snadnou použitelnost - vyžaduje jen několik řádků kódu pro implementaci, což z něj činí výbornou volbu pro vývojáře a výzkumníky pracující na projektech rozpoznávání textu. Díky předtrénovaným modelům hlubokého učení dokáže efektivně detekovat a rozpoznávat text v různých písmech, stylech rukopisu a na složitých pozadích. Ať už pro automatizované zpracování dokumentů, rozpoznávání poznávacích značek nebo extrakci textu z obrázků, EasyOCR poskytuje výkonné a lehké řešení. Systém kombinuje:

  • Více modelovou detekci: Lokalizace textu založená na CRAFT s vylepšenou ResNet architekturou
  • Adaptivní rozpoznávání: Jazykově specifické modely (CRNN pro latinku, Transformer pro CJK)
  • Kontextové zpracování: Rekonstrukce odstavců a zachování pořadí čtení

Výkonnostní benchmarky pro různé typy dokumentů:

Typ dokumentuPřesnostVýkonHardware
Obchodní dokumenty98.6%42 stránek/minNVIDIA T4
Fotografie z mobilů94.2%28 obrázků/minGoogle Colab GPU
Historické archivy89.1%15 stránek/minCPU cluster

EasyOCR pro rozpoznávání a extrakci textu

Architektura zpracovává dokumenty ve třech optimalizovaných fázích:

  1. Detekce: Segmentace textových oblastí na úrovni pixelů
  2. Rozpoznávání: Předpověď sekvencí s jazykovým modelováním
  3. Rekonstrukce: Mapování prostorových vztahů
GitHub

Statistiky GitHubu

Název:
Jazyk:
hvězdy:
Vidlice:
Licence:
Úložiště bylo naposledy aktualizováno v

Základní technické schopnosti

1. Pokročilá detekce textu

Detekční subsystém obsahuje:

  • Generování tepelných map na úrovni znaků
  • Zpracování textu libovolného tvaru
  • Podpora více orientací (0-360°)
  • Potlačení šumu pozadí

2. Hybridní rozpoznávací systém

Modely rozpoznávání optimalizované pro typy písma:

  • Latinka/Cyrilika: CRNN s 7 CNN vrstvami + BiLSTM
  • Čínština/Japonština/Korejština: Transformer s 12 pozornostními hlavami
  • Arabština/Hebrejština: BiLSTM zprava doleva s vlastní tokenizací

3. Podnikové funkce

  • Automatické hodnocení kvality
  • Konfigurovatelné kompromisy přesnost/úplnost
  • Přidělování zdrojů podle hardwaru

Instalace a konfigurace

Systémové požadavky

KomponentaVývojProdukce
Python3.6+3.8+
Paměť8GB16GB+
GPUVolitelnéNVIDIA (CUDA 11.8+)

Možnosti instalace

Základní instalace


pip install easyocr  # Instaluje pouze CPU závislosti

Podpora GPU (Linux/Windows)


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

Docker (Produkční nasazení)


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

Praktické příklady implementace

1. Produkční pipeline pro zpracování dokumentů

Kompletní OCR pracovní postup s předzpracováním a validací:

Produkční zpracování


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):
        # Vylepšení kontrastu
        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])
        }

# Použití
ocr = DocumentOCR(languages=['en','fr'])
result = ocr.process('legal_contract.jpg')
print(f"Průměrná spolehlivost: {result['confidence']:.2%}")

2. Dávkové zpracování faktur

Extrakce klíčových polí z různých formátů faktur:

Extrakce dat z faktur


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/')

Optimalizace výkonu

GPU akcelerace

  • Dávkové zpracování: Optimální velikosti dávek (4-16 podle GPU paměti)
  • Správa paměti: Automatické rozdělení velkých dokumentů
  • Smíšená přesnost: FP16 inference s Tensor Cores

Ladění přesnosti

  • Prahování kontrastu: Upravte contrast_ths pro nízkokvalitní skeny
  • Filtrování velikosti textu: Nastavte min_size pro ignorování malého textu
  • Priorizace jazyků: Seřaďte jazyky podle očekávané četnosti

Podobné Produkty

 Czech