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

Avanceret OCR til moderne dokumentudfordringer

Uddrag tekst præcist fra scannede dokumenter, fotos og PDF'er med dybdelæringsdrevet genkendelse

Hvad er EasyOCR?

EasyOCR er et open source-bibliotek til optisk tegngenkendelse (OCR) udviklet af Jaided AI, designet til at udtrække tekst fra billeder og scannede dokumenter med høj nøjagtighed. Bygget på PyTorch understøtter det over 80 sprog, herunder latinsk, kinesisk, arabisk og flere. EasyOCR er kendt for sin brugervenlighed - det kræver kun få linjer kode at implementere, hvilket gør det til et fremragende valg for udviklere og forskere, der arbejder med tekstgenkendelsesprojekter. Med sine fortrænede dybdelæringsmodeller kan det effektivt detektere og genkende tekst i forskellige skrifttyper, håndskrevne stile og komplekse baggrunde. Uanset om det er til automatiseret dokumentbehandling, nummerpladegenkendelse eller billedbaseret tekstudtrækning, leverer EasyOCR en kraftfuld og letvægtsløsning. Systemet kombinerer:

  • Multimodel-detektering: Tekstlokalisering baseret på CRAFT med forbedret ResNet-arkitektur
  • Adaptiv genkendelse: Skriftspecifikke modeller (CRNN til latinsk, Transformer til CJK)
  • Kontekstbevidst behandling: Genopbygning af afsnit og bevaring af læserækkefølge

Ydelsesbenchmarks for forskellige dokumenttyper:

DokumenttypeNøjagtighedYdelseHardware
Erhvervsdocumenter98,6%42 sider/minNVIDIA T4
Mobilfotos94,2%28 billeder/minGoogle Colab GPU
Historiske arkiver89,1%15 sider/minCPU-cluster

EasyOCR til tekstgenkendelse og -udtrækning

Arkitekturen behandler dokumenter i tre optimerede faser:

  1. Detektering: Pixelvis segmentering af tekstområder
  2. Genkendelse: Sekvensforudsigelse med sprogmodellering
  3. Rekonstruktion: Kortlægning af rumlige relationer
GitHub

GitHub-statistik

Navn:
Sprog:
Stjerner:
Forgafler:
Licens:
Repository blev sidst opdateret kl

Kerntekniske egenskaber

1. Avanceret tekstdetektering

Detekteringssubsystemet omfatter:

  • Generering af varmekort på tegnniveau
  • Håndtering af tekst med vilkårlige former
  • Understøttelse af flere orienteringer (0-360°)
  • Undertrykkelse af baggrundsstøj

2. Hybridt genkendelsessystem

Genkendelsesmodeller optimeret til skrifttyper:

  • Latinsk/Kyrillisk: CRNN med 7 CNN-lag + BiLSTM
  • Kinesisk/Japansk/Koreansk: Transformer med 12 opmærksomhedshoveder
  • Arabisk/Hebræisk: Højre-til-venstre BiLSTM med brugerdefineret tokenisering

3>Enterprise-funktioner

  • Automatisk kvalitetsvurdering
  • Konfigurerbar nøjagtighed/genkendelsesgrad-afvejning
  • Hardwarebevidst ressourceallokering

Installation og konfiguration

Systemkrav

KomponentUdviklingProduktion
Python3.6+3.8+
Hukommelse8GB16GB+
GPUValgfriNVIDIA (CUDA 11.8+)

Installationsmuligheder

Grundlæggende installation


pip install easyocr  # Installerer kun CPU-afhængigheder

GPU-understøttelse (Linux/Windows)


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

Docker (Produktionsinstallation)


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

Praktiske implementeringseksempler

1. Produktionsdokumentbehandlingspipeline

Komplet OCR-workflow med forbehandling og validering:

Produktionsklar behandling


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

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

2. Batchbehandling af fakturaer

Uddrag nøglefelter fra flere fakturaformater:

Fakturaudtrækning


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

Ydelsesoptimering

GPU-acceleration

  • Batchbehandling: Optimale batchstørrelser (4-16 afhængigt af GPU-hukommelse)
  • Hukommelseshåndtering: Automatisk opdeling af store dokumenter
  • Blandet præcision: FP16-inferens med Tensor Cores

Nøjagtighedsjustering

  • Kontrasttærskler: Juster contrast_ths for lavkvalitetsskanninger
  • Tekststørrelsesfiltrering: Indstil min_size for at ignorere lille tekst
  • Sprogprioritering: Sorter sprog efter forventet hyppighed

Lignende Produkter

 Dansk