Σύγχρονη 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 για αναγνώριση και εξαγωγή κειμένου

Η αρχιτεκτονική επεξεργάζεται έγγραφα σε τρία βήματα:

  1. Ανίχνευση: Κατάτμηση περιοχής κειμένου σε επίπεδο pixel
  2. Αναγνώριση: Πρόβλεψη ακολουθίας με μοντελοποίηση γλώσσας
  3. Ανασύνθεση: Χαρτογράφηση χωρικών σχέσεων
GitHub

Στατιστικά GitHub

Ονομα:
Γλώσσα:
Αστέρια:
Πιρούνια:
Αδεια:
Το αποθετήριο ενημερώθηκε τελευταία φορά στις

Βασικές Τεχνικές Δυνατότητες

1. Προηγμένη Ανίχνευση Κειμένου

Το σύστημα ανίχνευσης προσφέρει:

  • Δημιουργία θερμοχάρτη σε επίπεδο χαρακτήρων
  • Χειρισμό περιοχών κειμένου με αυθαίρετα σχήματα
  • Υποστήριξη πολλαπλών προσανατολισμών (0-360°)
  • Καταστολή θορύβου φόντου

2. Υβριδικό Σύστημα Αναγνώρισης

Τα μοντέλα αναγνώρισης είναι βελτιστοποιημένα ανά τύπο γραφής:

  • Λατινικά/Κυριλλικά: CRNN με 7 στρώματα CNN + BiLSTM
  • Κινέζικα/Ιαπωνικά/Κορεάτικα: Transformer με 12 κεφάλια προσοχής
  • Αραβικά/Εβραϊκά: BiLSTM δεξιά προς αριστερά με προσαρμοσμένη tokenization

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 inference με Tensor Cores

Βελτίωση Ακρίβειας

  • Όρια αντίθεσης: Ρύθμιση contrast_ths για σαρώσεις χαμηλής ποιότητας
  • Φιλτράρισμα μεγέθους κειμένου: Ορισμός min_size για αγνόηση μικρού κειμένου
  • Προτεραιοποίηση γλώσσας: Ταξινόμηση γλωσσών κατά αναμενόμενη συχνότητα

Παρόμοια Προϊόντα

 Ελληνικά