1. Produk
  2.   Penghurai
  3.   Python
  4.   EasyOCR
 
  

OCR Maju untuk Cabaran Dokumen Moden

Ekstrak teks dengan tepat daripada dokumen scan, foto dan PDF menggunakan pengenalan berkuasa pembelajaran mendalam

Apa itu EasyOCR?

EasyOCR ialah pustaka Pengenalan Aksara Optik (OCR) sumber terbuka dibangunkan oleh Jaided AI, direka untuk mengekstrak teks daripada imej dan dokumen scan dengan ketepatan tinggi. Dibina atas PyTorch, ia menyokong lebih 80 bahasa termasuk Latin, Cina, Arab dan banyak lagi. EasyOCR terkenal dengan kemudahan penggunaannya, hanya memerlukan beberapa baris kod untuk dilaksanakan, menjadikannya pilihan terbaik untuk pembangun dan penyelidik yang bekerja pada projek pengenalan teks. Dengan model pembelajaran mendalam pra-latihnya, ia dapat mengesan dan mengenali teks dengan cekap dalam pelbagai fon, gaya tulisan tangan dan latar belakang kompleks. Sama ada untuk pemprosesan dokumen automatik, pengenalan plat lesen atau pengekstrakan teks berasaskan imej, EasyOCR menyediakan penyelesaian yang berkuasa dan ringan. Sistem ini menggabungkan:

  • Pengesanan pelbagai model: Penyetempatan teks berasaskan CRAFT dipertingkat dengan tulang belakang ResNet
  • Pengenalan adaptif: Model khusus skrip (CRNN untuk Latin, Transformer untuk CJK)
  • Pemprosesan sedar konteks: Pembinaan semula perenggan dan pemeliharaan susunan bacaan

Penanda aras prestasi menunjukkan hasil yang konsisten merentas jenis dokumen:

Jenis DokumenKetepatanKelancaranPerkakasan
Dokumen perniagaan98.6%42 muka/minNVIDIA T4
Imej tangkapan mudah alih94.2%28 imej/minGoogle Colab GPU
Arkib sejarah89.1%15 muka/minKluster CPU

EasyOCR untuk Pengenalan dan Pengekstrakan Teks OCR

Seni bina memproses dokumen melalui tiga peringkat dioptimumkan:

  1. Pengesanan: Segmentasi wilayah teks pada peringkat piksel
  2. Pengenalan: Ramalan jujukan dengan pemodelan bahasa
  3. Pembinaan semula: Pemetaan hubungan spatial
GitHub

Statistik GitHub

nama:
Bahasa:
Bintang:
Garpu:
Lesen:
Repositori dikemas kini terakhir pada

Keupayaan Teknikal Teras

1. Pengesanan Teks Maju

Subsistem pengesanan mempunyai:

  • Penjanaan peta haba peringkat aksara
  • Pengendalian wilayah teks berbentuk arbitrari
  • Sokongan multi-orientasi (0-360°)
  • Penindasan bunyi latar belakang

2. Sistem Pengenalan Hibrid

Model pengenalan dioptimumkan mengikut jenis skrip:

  • Latin/Cyrillic: CRNN dengan 7 lapisan CNN + BiLSTM
  • Cina/Jepun/Korea: Transformer dengan 12 kepala perhatian
  • Arab/Hebrew: BiLSTM kanan-ke-kiri dengan tokenisasi tersuai

3. Ciri Perusahaan

  • Anggaran kualiti automatik
  • Pertukaran ketepatan/recall boleh dikonfigurasi
  • Peruntukan sumber sedar perkakasan

Pemasangan & Konfigurasi

Keperluan Sistem

KomponenPembangunanPengeluaran
Python3.6+3.8+
Memori8GB16GB+
GPUPilihanNVIDIA (CUDA 11.8+)

Pilihan Pemasangan

Pemasangan Asas


pip install easyocr  # Memasang kebergantungan CPU sahaja

Sokongan GPU (Linux/Windows)


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

Docker (Pelaksanaan Pengeluaran)


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

Contoh Pelaksanaan Praktikal

1. Saluran Paip Dokumen Pengeluaran

Aliran kerja OCR lengkap dengan pra-pemprosesan dan pengesahan:

Pemprosesan Sedia Pengeluaran


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

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

2. Pemprosesan Invois Kelompok

Ekstrak medan utama daripada pelbagai format invois:

Pengekstrakan Data Invois


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

3. Pengesanan Teks dalam Masa Nyata

Contoh pelaksanaan untuk aplikasi masa nyata:

Pengesanan Masa Nyata dengan Kamera


import easyocr
import cv2

reader = easyocr.Reader(['en'])
cap = cv2.VideoCapture(0)

while True:
    _, frame = cap.read()
    results = reader.readtext(frame, detail=0)
    for text in results:
        print("Teks dikesan:", text)
    cv2.imshow('OCR Masa Nyata', frame)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

Pengoptimuman Prestasi

Pecutan GPU

  • Pemprosesan Kelompok: Saiz kelompok optimum (4-16 bergantung pada memori GPU)
  • Pengurusan Memori: Pengecualian automatik untuk dokumen besar
  • Ketepatan Campuran: Inferens FP16 dengan Tensor Cores

Penalaan Ketepatan

  • Ambang Kontras: Laraskan contrast_ths untuk scan berkualiti rendah
  • Penapisan Saiz Teks: Tetapkan min_size untuk mengabaikan teks kecil
  • Keutamaan Bahasa: Susun bahasa mengikut prevalens dijangkakan

Produk Serupa

 Malay