Kehittynyt OCR moderniin asiakirjakäsittelyyn

Tunnista tarkasti tekstiä skannatuista asiakirjoista, kuvista ja PDF-tiedostoista syväoppimiseen perustuvalla teknologialla

Mikä on EasyOCR?

EasyOCR on avoimen lähdekoodin Optinen Merkkien Tunnistus (OCR) -kirjasto, jonka on kehittänyt Jaided AI. Se erottaa tekstiä kuvista ja skannatuista asiakirjoista erittäin tarkasti. PyTorch-pohjainen kirjasto tukee yli 80 kieltä, mukaan lukien latinalaisia, kiinaa, arabiaa ja muita. EasyOCR on tunnettu helppokäyttöisyydestään - vain muutaman koodirivin avulla saat sen toimimaan, mikä tekee siitä erinomaisen valinnan kehittäjille ja tutkijoille, jotka työskentelevät tekstintunnistusprojekteissa. Sen esikoulutetut syväoppimismallit tunnistavat tehokkaasti tekstiä eri fonttityypeissä, käsinkirjoituksessa ja monimutkaisissa taustakuvioissa. Olipa kyseessä sitten automaattinen asiakirjojen käsittely, rekisterikilven tunnistus tai tekstin erottaminen kuvista, EasyOCR tarjoaa tehokkaan ja kevyen ratkaisun. Järjestelmä yhdistää:

  • Usean mallin tunnistus: CRAFT-pohjainen tekstin paikallistaminen ResNet-ydinrakenteella vahvistettuna
  • Sopeutuva tunnistus: Kirjoitusjärjestelmäkohtaiset mallit (CRNN latinalaisille, Transformer CJK-kielille)
  • Kontekstuaalinen käsittely: Kappaleiden uudelleenrakentaminen ja lukujärjestyksen säilyttäminen

Suorituskykymittaukset osoittavat johdonmukaisia tuloksia erityyppisissä asiakirjoissa:

AsiakirjatyyppiTarkkuusSuorituskykyLaitteisto
Liikeasiakirjat98,6%42 sivua/minNVIDIA T4
Mobiililaitteella otetut kuvat94,2%28 kuvaa/minGoogle Colab GPU
Historialliset arkistot89,1%15 sivua/minCPU-klusteri

EasyOCR tekstin tunnistukseen ja erottamiseen

Arkkitehtuuri käsittelee asiakirjoja kolmessa optimoidussa vaiheessa:

  1. Tunnistus: Tekstialueiden segmentointi pikselitasolla
  2. Erottaminen: Sekvenssien ennustaminen kielimallinnuksen avulla
  3. Rakentaminen: Tilallisten suhteiden kartoittaminen
GitHub

GitHub-tilastot

Nimi:
Kieli:
Tähdet:
Haarukat:
Lisenssi:
Arkisto päivitettiin viimeksi klo

Keskeiset tekniset ominaisuudet

1. Kehittynyt tekstin tunnistus

Tunnistusalijärjestelmä sisältää:

  • Merkkitason lämpökarttojen luonnin
  • Mielivaltaisen muotoisten tekstialueiden käsittelyn
  • Useiden suuntausten (0-360°) tuen
  • Taustakohinan vähentämisen

2. Hybridierottelujärjestelmä

Erottelumallit on optimoitu kirjoitusjärjestelmätyypeittäin:

  • Latinalaiset/Kyrilliset: CRNN 7 CNN-kerroksella + BiLSTM
  • Kiina/Japani/Korea: Transformer 12 huomioyksiköllä
  • Arabia/Hebrea: Oikealta vasemmalle BiLSTM mukautetulla tokenisoinnilla

3. Yrityskäyttöön suunnatut ominaisuudet

  • Automaattinen laadun arviointi
  • Muokattavat tarkkuus/peittävyys-tasapainot
  • Laitteistotietoinen resurssien allokointi

Asennus ja määritys

Järjestelmävaatimukset

KomponenttiKehitysTuotanto
Python3.6+3.8+
Muisti8GB16GB+
GPUValinnainenNVIDIA (CUDA 11.8+)

Asennusvaihtoehdot

Perusasennus


pip install easyocr  # Asentaa vain CPU-riippuvuudet

GPU-tuki (Linux/Windows)


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

Docker (Tuotantokäyttöönotto)


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

Käytännön käyttöönottoesimerkkejä

1. Tuotantoasiakirjojen käsittelyputki

Täydellinen OCR-työnkulku esikäsittelyllä ja vahvistuksella:

Tuotantovalmiiksi käsittely


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

# Käyttö
ocr = DocumentOCR(languages=['en','fr'])
result = ocr.process('legal_contract.jpg')
print(f"Keskimääräinen luotettavuus: {result['confidence']:.2%}")

2. Laskujen eräajo

Keskeisten kenttien erottaminen useista laskumuodoista:

Laskujen tietojen erottaminen


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

Suorituskyvyn optimointi

GPU-kiihdytys

  • Eräajo: Optimaaliset eräkoot (4-16 riippuen GPU-muistista)
  • Muistinhallinta: Automaattinen pilkkominen suurille asiakirjoille
  • Sekatarkkuus: FP16-päättely Tensor Coreilla

Tarkkuuden säätö

  • Kontrastikynnykset: Säädä contrast_ths huonolaatuisille skannauksille
  • Tekstin koon suodatus: Aseta min_size ohittaaksesi pienet tekstit
  • Kielten priorisointi: Järjestä kielet odotetun esiintyvyyden mukaan

Samankaltaisia Tuotteita

 Finnish