Σύγχρονη 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 |
Η αρχιτεκτονική επεξεργάζεται έγγραφα σε τρία βήματα:
- Ανίχνευση: Κατάτμηση περιοχής κειμένου σε επίπεδο pixel
- Αναγνώριση: Πρόβλεψη ακολουθίας με μοντελοποίηση γλώσσας
- Ανασύνθεση: Χαρτογράφηση χωρικών σχέσεων
Βασικές Τεχνικές Δυνατότητες
1. Προηγμένη Ανίχνευση Κειμένου
Το σύστημα ανίχνευσης προσφέρει:
- Δημιουργία θερμοχάρτη σε επίπεδο χαρακτήρων
- Χειρισμό περιοχών κειμένου με αυθαίρετα σχήματα
- Υποστήριξη πολλαπλών προσανατολισμών (0-360°)
- Καταστολή θορύβου φόντου
2. Υβριδικό Σύστημα Αναγνώρισης
Τα μοντέλα αναγνώρισης είναι βελτιστοποιημένα ανά τύπο γραφής:
- Λατινικά/Κυριλλικά: CRNN με 7 στρώματα CNN + BiLSTM
- Κινέζικα/Ιαπωνικά/Κορεάτικα: Transformer με 12 κεφάλια προσοχής
- Αραβικά/Εβραϊκά: BiLSTM δεξιά προς αριστερά με προσαρμοσμένη tokenization
3. Επαγγελματικές Λειτουργίες
- Αυτόματη εκτίμηση ποιότητας
- Προσαρμόσιμες ρυθμίσεις ακρίβειας/ανάκλησης
- Διαχείριση πόρων με γνώση υλικού
Εγκατάσταση & Διαμόρφωση
Απαιτήσεις Συστήματος
Στοιχείο | Ανάπτυξη | Παραγωγή |
---|---|---|
Python | 3.6+ | 3.8+ |
Μνήμη | 8GB | 16GB+ |
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 inference με Tensor Cores
Βελτίωση Ακρίβειας
- Όρια αντίθεσης: Ρύθμιση
contrast_ths
για σαρώσεις χαμηλής ποιότητας - Φιλτράρισμα μεγέθους κειμένου: Ορισμός
min_size
για αγνόηση μικρού κειμένου - Προτεραιοποίηση γλώσσας: Ταξινόμηση γλωσσών κατά αναμενόμενη συχνότητα