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

OCR Canggih untuk Tantangan Dokumen Modern

Ekstrak teks secara akurat dari dokumen pindaian, foto, dan PDF dengan pengenalan berbasis deep learning

Apa itu EasyOCR?

EasyOCR adalah pustaka open-source Optical Character Recognition (OCR) yang dikembangkan oleh Jaided AI, dirancang untuk mengekstrak teks dari gambar dan dokumen pindaian dengan akurasi tinggi. Berbasis PyTorch, mendukung lebih dari 80 bahasa termasuk Latin, Cina, Arab, dan lainnya. EasyOCR dikenal karena kemudahan penggunaannya - hanya membutuhkan beberapa baris kode untuk diimplementasikan, menjadikannya pilihan tepat untuk pengembang dan peneliti yang mengerjakan proyek pengenalan teks. Dengan model deep learning pra-latihnya, dapat mendeteksi dan mengenali teks secara efisien dalam berbagai font, tulisan tangan, dan latar belakang kompleks. Baik untuk pemrosesan dokumen otomatis, pengenalan plat nomor, atau ekstraksi teks berbasis gambar, EasyOCR menyediakan solusi yang kuat dan ringan. Sistem ini menggabungkan:

  • Deteksi multi-model: Pelokalan teks berbasis CRAFT yang ditingkatkan dengan backbone ResNet
  • Pengenalan adaptif: Model spesifik skrip (CRNN untuk Latin, Transformer untuk CJK)
  • Pemrosesan sadar konteks: Rekonstruksi paragraf dan pelestarian urutan baca

Tolok ukur kinerja menunjukkan hasil yang konsisten di berbagai jenis dokumen:

Jenis DokumenAkurasiKinerjaPerangkat Keras
Dokumen bisnis98,6%42 halaman/menitNVIDIA T4
Gambar dari ponsel94,2%28 gambar/menitGoogle Colab GPU
Arsip sejarah89,1%15 halaman/menitKluster CPU

EasyOCR untuk Pengenalan dan Ekstraksi Teks OCR

Arsitekturnya memproses dokumen dalam tiga tahap yang dioptimalkan:

  1. Deteksi: Segmentasi area teks pada tingkat piksel
  2. Pengenalan: Prediksi urutan dengan pemodelan bahasa
  3. Rekonstruksi: Pemetaan hubungan spasial
GitHub

Statistik GitHub

Nama:
Bahasa:
Bintang:
Garpu:
Lisensi:
Repositori terakhir diperbarui pada

Kemampuan Teknis Inti

1. Deteksi Teks Lanjutan

Subsistem deteksi mencakup:

  • Pembuatan peta panas tingkat karakter
  • Penanganan area teks berbentuk bebas
  • Dukungan multi-orientasi (0-360°)
  • Penekanan noise latar belakang

2. Sistem Pengenalan Hibrida

Model pengenalan dioptimalkan per jenis skrip:

  • Latin/Sirilik: CRNN dengan 7 lapisan CNN + BiLSTM
  • Cina/Jepang/Korea: Transformer dengan 12 kepala perhatian
  • Arab/Ibrani: BiLSTM kanan-ke-kiri dengan tokenisasi khusus

3. Fitur Perusahaan

  • Estimasi kualitas otomatis
  • Pertukaran akurasi/recall yang dapat dikonfigurasi
  • Alokasi sumber daya sadar perangkat keras

Instalasi & Konfigurasi

Persyaratan Sistem

KomponenPengembanganProduksi
Python3.6+3.8+
Memori8GB16GB+
GPUOpsionalNVIDIA (CUDA 11.8+)

Opsi Instalasi

Instalasi Dasar


pip install easyocr  # Menginstal dependensi CPU saja

Dukungan GPU (Linux/Windows)


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

Docker (Deklarasi Produksi)


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

Contoh Implementasi Praktis

1. Alur Pemrosesan Dokumen Produksi

Alur kerja OCR lengkap dengan pra-pemrosesan dan validasi:

Pemrosesan Siap Produksi


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):
        # Peningkatan 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','id'])
result = ocr.process('kontrak_hukum.jpg')
print(f"Akurasi rata-rata: {result['confidence']:.2%}")

2. Pemrosesan Faktur Batch

Ekstraksi bidang kunci dari berbagai format faktur:

Ekstraksi Data Faktur


import easyocr
import re
from pathlib import Path

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

POLA_FAKTUR = {
    'nomor_faktur': r'Faktur\s*Nomor[:#]?\s*([A-Z0-9-]+)',
    'tanggal': r'Tanggal[:]?\s*(\d{2}[/-]\d{2}[/-]\d{4})',
    'jumlah': r'Total\s*Hutang[:]?\s*\$?(\d+\.\d{2})'
}

def proses_faktur(folder):
    hasil = []
    for faktur in Path(folder).glob('*.pdf'):
        teks = '\n'.join(reader.readtext(str(faktur), detail=0))
        ekstrak = {field: re.search(pola, teks) 
                    for field, pola in POLA_FAKTUR.items()}
        hasil.append({
            'file': faktur.name,
            'data': {k: v.group(1) if v else None 
                     for k, v in ekstrak.items()}
        })
    return hasil
data_faktur = proses_faktur('/faktur/')

Optimalisasi Kinerja

Akselerasi GPU

  • Pemrosesan Batch: Ukuran batch optimal (4-16 tergantung memori GPU)
  • Manajemen Memori: Pembagian otomatis untuk dokumen besar
  • Presisi Campuran: Inferensi FP16 dengan Tensor Cores

Penyetelan Akurasi

  • Ambang Kontras: Sesuaikan contrast_ths untuk pindaian kualitas rendah
  • Penyaringan Ukuran Teks: Atur min_size untuk mengabaikan teks kecil
  • Prioritas Bahasa: Urutkan bahasa berdasarkan prevalensi yang diharapkan

Produk Sejenis

 Indonesia