anonym.legal
Πίσω στο BlogGDPR & Συμμόρφωση

Κληροδοτηθέν Σαρωμένα Έγγραφα: GDPR OCR +...

Η κληροδοτηθέν έγγραφα (έγγραφα 1980s-2000s) είναι σαρωμένα ως εικόνες με χαμηλής ποιότητας OCR.

April 21, 20267 λεπτά ανάγνωσης
legacy documentsOCR PII detectionGDPR erasurescanned documentsdocument archive

Κληροδοτηθέν Σαρωμένα Έγγραφα: GDPR OCR + Ανωνυμοποίηση (2025)

Προκληθείσα Κληροδοτηθέντα Έγγραφα

Πολλές οργανώσεις (ιδίως νόμιμα γραφεία, ασφαλιστικές εταιρείες, κρατικές υπηρεσίες) διαθέτουν μεγάλες αρχείων σαρωμένων εγγράφων από τα 1980-2010:

  • Παλιά κατάλογος
  • Χαμηλής ανάλυσης σαρώσεις (72-150 DPI)
  • Πολλές σελίδες που έχουν σαρωθεί σε ασπρόμαυρο
  • Δεν υπάρχει OCR αρχικά (εικόνες μόνο)

Πρόβλημα GDPR: Αυτά τα έγγραφα συχνά περιέχουν ευαίσθητα δεδομένα (όνοματα, διευθύνσεις, αριθμοί ταυτότητας) αλλά δεν μπορούν να ανίχνευση χωρίς πρώτα OCR.

Πρόκληση 1: Χαμηλής Ποιότητας OCR

Η OCR σε χαμηλής ανάλυσης σαρώσεις έχει χαμηλή ακρίβεια:

Παράδειγμα:

  • Αρχικό OCR έξοδο: "123l5 l0l456789" (εικόνα ανάγνωση)
  • Πραγματικό: "12345 10l456789" (1 διαδοχ 0 ως l)

Αποτέλεσμα: Presidio ή anonym.legal δεν μπορούν να ανιχνεύουν εθνικές αριθμοί που έχουν αποδοθεί OCR ανακριβώς.

Πρόκληση 2: Κρυμμένο Κείμενο σε Εικόνες

Αν το αρχικό σαρώνω είναι πολύ χαμηλό DPI ή παραμορφώθηκε, κανένα OCR δεν θα λάβει σωστά αποτέλεσμα.

Λύση: Χρησιμοποιήστε ανιχνευμένες μοντέλα OCR που έχουν δύο επίπεδα:

  1. Πρώτο επίπεδο: Tesseract (ασθενή χαμηλής ποιότητας)
  2. Δεύτερο επίπεδο: PaddleOCR ή EasyOCR (μοντέλα βαθούς μάθησης)

Τεχνική Λύση

Βήμα 1: Βελτίωση Εικόνας

Πρώτα, βελτιώστε την ανάλυση εικόνας χρησιμοποιώντας OpenCV:

import cv2
import numpy as np

def enhance_scanned_document(image_path):
    img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
    
    # Upscale 2x using INTER_CUBIC
    img = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)
    
    # Denoise
    img = cv2.fastNlMeansDenoising(img, None, h=10, templateWindowSize=7, searchWindowSize=21)
    
    # Contrast enhancement
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    img = clahe.apply(img)
    
    # Binarization
    _, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    
    return img

Βήμα 2: OCR με PaddleOCR

from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang=['en', 'el'])  # Multi-lang
result = ocr.ocr(enhanced_image, cls=True)

text = '\n'.join([line[0][1] for line in result])  # Extract text

Βήμα 3: Ανίχνευση PII

from presidio_analyzer import AnalyzerEngine

analyzer = AnalyzerEngine()
results = analyzer.analyze(text, language='en')

for entity in results:
    print(f"{entity.entity_type}: {text[entity.start:entity.end]}")

Βήμα 4: Ανωνυμοποίηση

from presidio_anonymizer import AnonymizerEngine

anonymizer = AnonymizerEngine()
anonymized_text = anonymizer.anonymize(text, analyzer_results=results)

Μελέτη Περίπτωσης: Δικαστήριο Αρχείων

Ένας νομικός διαχειριστής 2 εκατ. σαρωμένες σελίδες έγγραφα δίκης από τα 1990-2010.

Απαίτηση: Αποδυναμώστε όλα τα ονόματα και διευθύνσεις αγνώρων για νομικές αναφορές χωρίς παραβίαση GDPR.

Ροή:

  1. Σάρωση εικόνα → 2 εκατ. αρχείων
  2. Ενισχύτηκα εικόνα (OpenCV)
  3. OCR (PaddleOCR + Tesseract fallback)
  4. Ανίχνευση PII (Presidio ή anonym.legal)
  5. Ανωνυμοποίηση (αντικατάσταση με [PERSON], [ADDRESS], κλπ)
  6. Εξαγωγή σε PDF με ανώνυμα κείμενο
  7. Αποθήκευση σε ασφαλή αποθήκη

Πηγές

Έτοιμοι να προστατεύσετε τα δεδομένα σας;

Ξεκινήστε την ανωνυμοποίηση PII με 285+ τύπους οντοτήτων σε 48 γλώσσες.