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:
Asiakirjatyyppi | Tarkkuus | Suorituskyky | Laitteisto |
---|---|---|---|
Liikeasiakirjat | 98,6% | 42 sivua/min | NVIDIA T4 |
Mobiililaitteella otetut kuvat | 94,2% | 28 kuvaa/min | Google Colab GPU |
Historialliset arkistot | 89,1% | 15 sivua/min | CPU-klusteri |
Arkkitehtuuri käsittelee asiakirjoja kolmessa optimoidussa vaiheessa:
- Tunnistus: Tekstialueiden segmentointi pikselitasolla
- Erottaminen: Sekvenssien ennustaminen kielimallinnuksen avulla
- Rakentaminen: Tilallisten suhteiden kartoittaminen
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
Komponentti | Kehitys | Tuotanto |
---|---|---|
Python | 3.6+ | 3.8+ |
Muisti | 8GB | 16GB+ |
GPU | Valinnainen | NVIDIA (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