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

Avansert OCR for moderne dokumentutfordringer

Ekstraher tekst nøyaktig fra skannede dokumenter, bilder og PDF-er med dyp-læringsbasert gjenkjenning

Hva er EasyOCR?

EasyOCR er et åpen kildekode optisk tegngjenkjenning (OCR) bibliotek utviklet av Jaided AI, designet for å ekstrahere tekst fra bilder og skannede dokumenter med høy nøyaktighet. Bygget på PyTorch, støtter det over 80 språk, inkludert latinsk, kinesisk, arabisk og mer. EasyOCR er kjent for sin brukervennlighet, med bare noen få kodelinjer som kreves for implementering, noe som gjør det til et utmerket valg for utviklere og forskere som jobber med tekstgjenkjenningsprosjekter. Med sine forhåndstrente dyp-læringsmodeller kan det effektivt oppdage og gjenkjenne tekst i ulike skrifttyper, håndskrifter og komplekse bakgrunner. Enten det er for automatisert dokumentbehandling, bilskiltgjenkjenning eller bildebasert tekstextrahering, tilbyr EasyOCR en kraftfull og lettvektsløsning. Systemet kombinerer:

  • Flermodell-deteksjon: CRAFT-basert tekstlokalisering forbedret med ResNet-backbone
  • Adaptiv gjenkjenning: Skriptspesifikke modeller (CRNN for latinsk, Transformer for CJK)
  • Kontekstbevisst behandling: Paragrafrekonstruksjon og leserekkefølgebevaring

Ytelsesmålinger viser konsistente resultater på tvers av dokumenttyper:

DokumenttypeNøyaktighetGjennomstrømningMaskinvare
Forretningsdokumenter98.6%42 sider/minNVIDIA T4
Mobilfangede bilder94.2%28 bilder/minGoogle Colab GPU
Historiske arkiver89.1%15 sider/minCPU-klynge

EasyOCR for OCR tekstgjenkjenning og ekstrahering

Arkitekturen behandler dokumenter gjennom tre optimerte faser:

  1. Deteksjon: Pikselnivå tekstregionsegmentering
  2. Gjenkjenning: Sekvensprediksjon med språkmodellering
  3. Rekonstruksjon: Romlig relasjonskartlegging
GitHub

GitHub-statistikk

Navn:
Språk:
Stjerner:
Gafler:
Tillatelse:
Repository ble sist oppdatert kl

Kjerne Tekniske Evner

1. Avansert tekstdeteksjon

Deteksjonssubsystemet inneholder:

  • Tegnnivå varmekartegenerering
  • Håndtering av tekstregioner med vilkårlig form
  • Støtte for flerorientering (0-360°)
  • Bakgrunnsstøyundertrykking

2. Hybridt gjenkjenningssystem

Gjenkjenningsmodeller er optimalisert per skripttype:

  • Latinsk/Kyrillisk: CRNN med 7 CNN-lag + BiLSTM
  • Kinesisk/Japansk/Koreansk: Transformer med 12 oppmerksomhetsthoder
  • Arabisk/Hebresk: Høyre-til-venstre BiLSTM med tilpasset tokenisering

3>Enterprise-funksjoner

  • Automatisk kvalitetsestimering
  • Konfigurerbare presisjon/recall-avveininger
  • Maskinvarebevisst ressursallokering

Installasjon & Konfigurasjon

Systemkrav

KomponentUtviklingProduksjon
Python3.6+3.8+
Minne8GB16GB+
GPUValgfriNVIDIA (CUDA 11.8+)

Installasjonsalternativer

Grunnleggende installasjon


pip install easyocr  # Installerer kun CPU-avhengigheter

GPU-støtte (Linux/Windows)


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

Docker (Produksjonsutrulling)


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

Praktiske implementeringseksempler

1. Produksjonsdokumentpipeline

Komplett OCR-arbeidsflyt med forbehandling og validering:

Produksjonsklar 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])
        }

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

2. Batchfakturabehandling

Ekstraher nøkkelfelt fra flere fakturaformater:

Faktura dataekstrahering


import easyocr
import re
from pathlib import Path

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

INVOICE_PATTERNS = {
    'invoice_no': r'Faktura\s*Nummer[:#]?\s*([A-Z0-9-]+)',
    'date': r'Dato[:]?\s*(\d{2}[/-]\d{2}[/-]\d{4})',
    'amount': r'Total\s*beløp[:]?\s*\$?(\d+\.\d{2})'
}

def process_invoices(mappe):
    resultater = []
    for faktura in Path(mappe).glob('*.pdf'):
        tekst = '\n'.join(reader.readtext(str(faktura), detail=0))
        extracted = {felt: re.search(mønster, tekst) 
                    for felt, mønster in INVOICE_PATTERNS.items()}
        resultater.append({
            'fil': faktura.name,
            'data': {k: v.group(1) if v else None 
                     for k, v in extracted.items()}
        })
    return resultater
faktura_data = process_invoices('/fakturaer/')

Ytelsesoptimalisering

GPU-akselerasjon

  • Batchbehandling: Optimale batchstørrelser (4-16 avhengig av GPU-minne)
  • Minnestyring: Automatisk chunking for store dokumenter
  • Blandet presisjon: FP16-inferens med Tensor Cores

Nøyaktighetsjustering

  • Kontrastterskler: Juster contrast_ths for skanninger av lav kvalitet
  • Tekststørrelsesfiltrering: Sett min_size for å ignorere liten tekst
  • Språkprioritering: Rekkefølge språk etter forventet forekomst

Lignende Produkter

 Norsk