CodeKitHub
Γιατί οι φωτογραφίες σελίδων βιβλίων αποτυγχάνουν στο OCR (και πώς λίγες μοίρες κλίσης καταστρέφουν την ακρίβεια)

Γιατί οι φωτογραφίες σελίδων βιβλίων αποτυγχάνουν στο OCR (και πώς λίγες μοίρες κλίσης καταστρέφουν την ακρίβεια)

Δημοσιεύτηκε 24 Ιουλ 2026

Αν έχεις δοκιμάσει ποτέ να μετατρέψεις online μια φωτογραφία σελίδας βιβλίου σε κείμενο και πήρες πίσω έναν τοίχο από ακαταλαβίστικες ασυναρτησίες, μάλλον κατηγόρησες το λάθος πράγμα. Είναι δελεαστικό να υποθέσεις ότι φταίει το παλιό, κιτρινισμένο χαρτί ή ο κακός φωτισμός — αλλά στις δοκιμές, κανένα από τα δύο δεν επηρέασε σχεδόν καθόλου το αποτέλεσμα. Η πραγματική αιτία είναι σχεδόν πάντα κάτι που δεν βλέπεις απλώς κοιτάζοντας τη φωτογραφία: μια μικρή κλίση της κάμερας.

Το τεστ: ίδια σελίδα, τέσσερις συνθήκες

Για να βρούμε τι πραγματικά χαλάει το OCR (οπτική αναγνώριση χαρακτήρων) σε πραγματικές φωτογραφίες σελίδων βιβλίων, τρέξαμε το ίδιο κομμάτι κειμένου μέσα από το Tesseract — τη μηχανή OCR ανοιχτού κώδικα — υπό τέσσερις συνθήκες: μια καθαρή επίπεδη σάρωση, μια κιτρινισμένη/ξεθωριασμένη σελίδα, μια φωτογραφία με κλίση περίπου 12 μοιρών, και μια φωτογραφία με κλίση και μια αντανάκλαση φωτός (glare) προστιθέμενη.

Συνθήκη Ακρίβεια λέξεων
Καθαρή, επίπεδη σάρωση 100%
Κιτρινισμένη, ξεθωριασμένη σελίδα (χωρίς κλίση) 100%
Κλίση ~12° (χωρίς αποχρωματισμό) 67.7%
Κλίση ~8° + glare 71.0%

Η κιτρινισμένη σελίδα βαθμολογήθηκε πανομοιότυπα με την άψογη — άριστα. Τη στιγμή που εισήχθη κλίση, η ακρίβεια κατέρρευσε κατά ένα τρίτο, παράγοντας ακριβώς το είδος εξόδου που έχει δει όποιος έχει δοκιμάσει εργαλεία τύπου “scan textbook to word”: "brow," αντί για “brown”, "Chapte,." αντί για “Chapter.”, "hidde,," αντί για “hidden”.

Γιατί μια μικρή κλίση προκαλεί τόση ζημιά

Οι μηχανές OCR διαβάζουν κείμενο σαρώνοντας γραμμές εικόνας αναζητώντας συνεπείς οριζόντιες ζώνες μελανιού — αυτός είναι ο μηχανισμός που χρησιμοποιούν για να ξεχωρίσουν μία γραμμή κειμένου από την επόμενη. Σε μια απόλυτα ίσια σάρωση, κάθε γραμμή κειμένου κάθεται σε μια τακτοποιημένη οριζόντια ζώνη, και η μηχανή διαχωρίζει καθαρά τη γραμμή 1 από τη γραμμή 2 από τη γραμμή 3.

Γείρε τη σελίδα έστω και κατά 10 μοίρες, και εκείνη η καθαρή οριζόντια ζώνη γίνεται μια διαγώνια κηλίδα που εκτείνεται σε δεκάδες γραμμές pixel. Η λογική τμηματοποίησης γραμμών της μηχανής αρχίζει να συγχωνεύει χαρακτήρες από αυτό που θα έπρεπε να είναι δύο ξεχωριστές γραμμές, ή να διαχωρίζει έναν μοναδικό χαρακτήρα σε αυτό που νομίζει ότι είναι δύο διαφορετικές γραμμές. Το αποτέλεσμα δεν είναι “ελαφρώς λιγότερο ακριβές” — είναι κατηγορηματικά διαφορετική έξοδος, γιατί η θεμελιώδης μονάδα που διαβάζει η μηχανή (μια γραμμή) δεν αντιστοιχεί πια σε αυτό που πραγματικά υπάρχει στην εικόνα.

Αυτός είναι επίσης ο λόγος που μια φωτογραφία που φαίνεται εντελώς ευανάγνωστη σε εσένα μπορεί ακόμα να παράγει μη αναγνώσιμη έξοδο OCR. Το οπτικό σου σύστημα αντισταθμίζει μια κλίση 10 μοιρών χωρίς καμία συνειδητή προσπάθεια — δεν την καταγράφεις καν ως κλίση. Ένα απλοϊκό pipeline OCR δεν έχει ενσωματωμένη τέτοια αντιστάθμιση, και διαβάζει ακριβώς τα pixels που του δίνονται.

Η λύση: ισιώστε πριν αναγνωρίσετε, όχι μετά

Το πρακτικό συμπέρασμα δεν είναι “κράτα το κινητό σου πιο προσεκτικά” — λίγη κλίση όταν φωτογραφίζεις ένα ανοιχτό βιβλίο είναι σχεδόν αναπόφευκτη, αφού δεν πιέζεις τη σελίδα επίπεδη πάνω σε σαρωτή. Η λύση είναι αυτόματη: ανίχνευσε τη γωνία κλίσης και διόρθωσέ την πριν τρέξεις την αναγνώριση κειμένου, όχι μετά.

Ένας αξιόπιστος τρόπος να ανιχνεύσεις τη γωνία χωρίς κανένα βαρύ μοντέλο μηχανικής μάθησης είναι η μέθοδος του προφίλ προβολής (projection profile): περιστρέφεις την εικόνα σε ένα εύρος υποψήφιων γωνιών, και για κάθε μία, μετράς πόσο “αιχμηρή” είναι η κατανομή μελανιού ανά γραμμή. Στη σωστή γωνία, οι γραμμές κειμένου ευθυγραμμίζονται σε ευκρινείς ζώνες (υψηλή διακύμανση ανάμεσα σε γραμμές)· σε οποιαδήποτε άλλη γωνία, το μελάνι απλώνεται στις γραμμές (χαμηλή διακύμανση). Η γωνία που παράγει την υψηλότερη διακύμανση είναι η γωνία διόρθωσης (deskew).

Τρέχοντας πρώτα αυτή τη διόρθωση και μετά αναγνωρίζοντας το κείμενο, επαναφέραμε κάθε μία από τις δοκιμαστικές μας περιπτώσεις με κλίση στο 100% ακρίβειας λέξεων — η ίδια σελίδα, η ίδια μηχανή OCR, με τη μόνη διαφορά να είναι το ίσιωμα πρώτα.

Τι σημαίνει αυτό αν ψηφιοποιείς ένα βιβλίο

  • Μην ανησυχείς για την κατάσταση του χαρτιού. Το κιτρίνισμα, το ελαφρύ ξεθώριασμα και η μικρή απώλεια αντίθεσης από παλιό χαρτί μετακινούν ελάχιστα την ακρίβεια από μόνα τους. Ένα παλιό paperback ψηφιοποιείται περίπου εξίσου καλά με ένα καινούριο.
  • Ανησύχησε για τη γωνία. Ακόμα και μια κλίση που δεν θα πρόσεχες με το μάτι μπορεί να είναι όλη η διαφορά ανάμεσα σε χρησιμοποιήσιμο κείμενο και ασυναρτησίες.
  • Το glare από φλας έχει μικρότερη σημασία από την κλίση, αλλά ακόμα βλάπτει. Ένα φωτεινό σημείο πάνω σε γυαλιστερό χαρτί μπορεί να σβήσει όποιο κείμενο βρίσκεται από κάτω — η διόρθωση γωνίας δεν θα διορθώσει ένα σημείο όπου δεν υπάρχει καθόλου ευανάγνωστο μελάνι να διαβαστεί εξαρχής.
  • Ένα εργαλείο που διορθώνει την κλίση αυτόματα λύνει το πραγματικό πρόβλημα. Το δικό μας εργαλείο book page to text τρέχει ακριβώς αυτό το βήμα ανίχνευσης-και-διόρθωσης μέσα στον browser σου πριν την αναγνώριση — χωρίς upload, χωρίς server, και είναι φτιαγμένο συγκεκριμένα γύρω από το πρόβλημα της κλίσης αντί να υποθέτει ότι του δίνεις μια επίπεδη σάρωση.

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

← Επιστροφή στο blog