OCR ขั้นสูงสำหรับการจัดการเอกสารยุคใหม่

ดึงข้อความจากเอกสารที่สแกน รูปภาพ และไฟล์ PDF ได้อย่างแม่นยำ ด้วยเทคโนโลยีการรู้จำแบบการเรียนรู้เชิงลึก

EasyOCR คืออะไร?

EasyOCR เป็นไลบรารีการรู้จำตัวอักษรด้วยแสง (OCR) แบบโอเพนซอร์ส ที่พัฒนาโดย Jaided AI ออกแบบมาเพื่อดึงข้อความจากรูปภาพและเอกสารที่สแกนด้วยความแม่นยำสูง สร้างบน PyTorch รองรับกว่า 80 ภาษา รวมทั้งละติน จีน อาหรับ และอื่นๆ EasyOCR โดดเด่นในเรื่องความง่ายในการใช้งาน โดยใช้โค้ดเพียงไม่กี่บรรทัด จึงเป็นตัวเลือกที่ยอดเยี่ยมสำหรับนักพัฒนาและนักวิจัยที่ทำงานเกี่ยวกับโครงการรู้จำข้อความ ด้วยโมเดลการเรียนรู้เชิงลึกที่ฝึกไว้ล่วงหน้า มันสามารถตรวจจับและรู้จำข้อความในแบบอักษรต่างๆ ลายมือเขียน และพื้นหลังที่ซับซ้อนได้อย่างมีประสิทธิภาพ ไม่ว่าจะเป็นการประมวลผลเอกสารอัตโนมัติ การรู้จำป้ายทะเบียนรถ หรือการดึงข้อความจากรูปภาพ EasyOCR ให้โซลูชันที่ทรงพลังและน้ำหนักเบา ระบบนี้รวมคุณสมบัติ:

  • การตรวจจับแบบหลายโมเดล: การระบุตำแหน่งข้อความแบบ CRAFT ที่เสริมด้วยโครงสร้าง ResNet
  • การรู้จำที่ปรับได้: โมเดลเฉพาะสคริปต์ (CRNN สำหรับละติน, Transformer สำหรับ CJK)
  • การประมวลผลที่เข้าใจบริบท: การสร้างย่อหน้าใหม่และการรักษาลำดับการอ่าน

ผลการทดสอบประสิทธิภาพแสดงผลลัพธ์ที่สม่ำเสมอในเอกสารประเภทต่างๆ:

ประเภทเอกสารความแม่นยำความเร็วฮาร์ดแวร์
เอกสารทางธุรกิจ98.6%42 หน้า/นาทีNVIDIA T4
รูปภาพจากมือถือ94.2%28 รูป/นาทีGoogle Colab GPU
เอกสารเก่า89.1%15 หน้า/นาทีคลัสเตอร์ CPU

EasyOCR สำหรับการรู้จำและดึงข้อความ OCR

โครงสร้างระบบประมวลผลเอกสารใน 3 ขั้นตอนที่ได้รับการปรับปรุง:

  1. การตรวจจับ: การแบ่งส่วนพื้นที่ข้อความระดับพิกเซล
  2. การรู้จำ: การทำนายลำดับด้วยการสร้างแบบจำลองภาษา
  3. การสร้างใหม่: การทำแผนที่ความสัมพันธ์เชิงพื้นที่
GitHub

สถิติ GitHub

ชื่อ:
ภาษา:
ดาว:
ส้อม:
ใบอนุญาต:
พื้นที่เก็บข้อมูลได้รับการอัปเดตครั้งล่าสุดเมื่อ

ความสามารถทางเทคนิคหลัก

1. การตรวจจับข้อความขั้นสูง

ระบบย่อยการตรวจจับมีคุณสมบัติ:

  • การสร้างแผนที่ความร้อนระดับตัวอักษร
  • การจัดการพื้นที่ข้อความรูปร่างต่างๆ
  • รองรับการวางแนวหลายแบบ (0-360°)
  • การลดสัญญาณรบกวนพื้นหลัง

2. ระบบการรู้จำแบบไฮบริด

โมเดลการรู้จำได้รับการปรับให้เหมาะสมตามประเภทสคริปต์:

  • ละติน/ซีริลลิก: CRNN พร้อมชั้น CNN 7 ชั้น + BiLSTM
  • จีน/ญี่ปุ่น/เกาหลี: Transformer พร้อมหัวความสนใจ 12 หัว
  • อาหรับ/ฮีบรู: BiLSTM ขวาไปซ้าย พร้อมการแบ่งส่วนคำแบบกำหนดเอง

3. คุณสมบัติระดับองค์กร

  • การประเมินคุณภาพอัตโนมัติ
  • การปรับสมดุลความแม่นยำ/การเรียกคืนได้
  • การจัดสรรทรัพยากรตามฮาร์ดแวร์

การติดตั้งและการกำหนดค่า

ความต้องการของระบบ

ส่วนประกอบการพัฒนาการผลิต
Python3.6+3.8+
หน่วยความจำ8GB16GB+
GPUไม่จำเป็นNVIDIA (CUDA 11.8+)

ตัวเลือกการติดตั้ง

การติดตั้งพื้นฐาน


pip install easyocr  # ติดตั้งเฉพาะส่วนที่จำเป็นสำหรับ CPU

การสนับสนุน GPU (Linux/Windows)


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

Docker (การใช้งานในระบบผลิต)


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

ตัวอย่างการนำไปใช้จริง

1. กระบวนการประมวลผลเอกสารสำหรับการผลิต

กระบวนการทำงาน OCR แบบครบวงจร พร้อมการเตรียมข้อมูลและการตรวจสอบ:

การประมวลผลพร้อมใช้งานจริง


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):
        # การปรับปรุงความคมชัด
        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])
        }

# การใช้งาน
ocr = DocumentOCR(languages=['en','fr'])
result = ocr.process('legal_contract.jpg')
print(f"ความเชื่อมั่นเฉลี่ย: {result['confidence']:.2%}")

2. การประมวลผลใบแจ้งหนี้แบบกลุ่ม

ดึงข้อมูลสำคัญจากใบแจ้งหนี้รูปแบบต่างๆ:

การดึงข้อมูลจากใบแจ้งหนี้


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

การปรับปรุงประสิทธิภาพ

การเร่งความเร็วด้วย GPU

  • การประมวลผลแบบกลุ่ม: ขนาดกลุ่มที่เหมาะสม (4-16 ขึ้นอยู่กับหน่วยความจำ GPU)
  • การจัดการหน่วยความจำ: การแบ่งเอกสารขนาดใหญ่อัตโนมัติ
  • ความแม่นยำแบบผสม: การอนุมาน FP16 ด้วย Tensor Cores

การปรับความแม่นยำ

  • เกณฑ์ความคมชัด: ปรับ contrast_ths สำหรับภาพสแกนคุณภาพต่ำ
  • การกรองขนาดข้อความ: ตั้งค่า min_size เพื่อละเว้นข้อความขนาดเล็ก
  • การจัดลำดับความสำคัญของภาษา: เรียงลำดับภาษาตามความถี่ที่คาดหวัง

สินค้าที่คล้ายกัน

 Thai