Ψηφιοποίηση κειμένου (OCR) - greek-language-tools/greek-nlp-notes GitHub Wiki

Ψηφιοποίηση κειμένου (OCR) και Ελληνικά

Η ψηφιοποίηση Ελληνικού κειμένου (OCR) με ΕΛ/ΛΑΚ είναι από τους τομείς στους οποίους υπάρχει η περισσότερη πρόοδος αυτή τη στιγμή, το πακέτο ΕΛ/ΛΑΚ tesseract που υποστηρίζεται από τη google ήδη επιτυγχάνει αξιόλογα επίπεδα ακρίβειας ακόμα και χωρίς επιπλέον «προπόνηση» ή επεμβάσεις (τουλάχιστον σε απλά κείμενα χωρίς ιδιαίτερη μορφοποίηση και με mainstream γραμματοσειρές).

Εκτός από το tesseract, σημαντική πρόοδος έχει γίνει και στο πακέτο ocropus, που επίσης στηρίζεται οικονομικά από τη google. To ocropus πλέον χρησιμοποιεί ένα νευρωνικό δίκτυο το οποίο χρησιμοποιεί ως είσοδο απλές στήλες από pixels και μπορεί να επιτύχει αρκετά καλή ακρίβεια ακόμα και χωρίς γλωσσικό μοντέλο ή περίπλοκες διαδικασίες «εξαγωγής ιδιοτήτων» (feature extraction) ή διαχωρισμού (segmentation) χαρακτήρων.

Τα νευρωνικά δίκτυα ειδικά όταν χρησιμοποιούνται με είσοδο σχετικά «απλής μορφής» (στην περίπτωσή μας απλά pixels) κατά κανόνα χρειάζονται μεγάλο όγκο δεδομένων για να «προπονηθούν» σωστά, αλλά για το OCR τυπωμένου κειμένου αυτό δεν είναι πρόβλημα αφού μπορούμε να κατασκευάσουμε όσα δεδομένα θέλουμε με τεχνητό τρόπο (αξιοποιώντας ελεύθερης άδειας γραμματοσειρές και κείμενα και προσομοιώνοντας διάφορα είδη παραμόρφωσης που προκύπτουν κατά τη διαδικασία της φωτοτύπησης ή της ψηφιοποίησης (scanning). Τόσο το ocropus όσο και το tesseract χρησιμοποιούν κατά προτίμηση συνθετικά δεδομένα πλέον αντί για χειρωνακτική επισήμανση.

Τα πιο ενδιαφέροντα προβλήματα αυτή τη στιγμή φαίνεται να υπάρχουν όταν η είσοδος έχει πολύπλοκη μορφοποίηση ή/και όταν η εικόνα προέρχεται από την κάμερα ενός κινητού. Και σε αυτή την περίπτωση πάντως δεν υπάρχει ιδιαίτερη δυσκολία που να σχετίζεται με τη γλώσσα αλλά κυρίως με τα κομμάτια που σχετίζονται με την επεξεργασία εικόνας.

Σε τι μας απασχολεί λοιπόν εμάς εδώ η περίπτωση του OCR; Ορισμένα ενδιαφέροντα προβλήματα:

  • Σε αρκετές περιπτώσεις λόγω κάποιων τυπογραφικών φαινομένων (π.χ., γραμματοσειρές μεταβλητού πλάτους) το σύστημα OCR δεν καταφέρνει να αναγνωρίσει σωστά τα κενά μεταξύ των λέξεων με συνέπεια τοαποτέλεσμαναμοιάζεικάπωςέτσι. Ένα ενδιαφέρον και όχι ιδιαίτερα δύσκολο πρόβλημα λοιπόν είναι να χωρίσουμε τις λέξεις αυτόματα εκ των υστέρων ανακτώντας το αρχικό κείμενο. Το πρόβλημα αυτό μπορεί να αντιμετωπιστεί ως παρόμοιο με την προεπεξεργασία κινεζικού κειμένου (όπου δε χρησιμοποιούνται κενά) αλλά για τα ελληνικά πιθανότατα μας βοηθούν και άλλα χαρακτηριστικά, όπως το τελικό σίγμα «ς», τα κεφαλαία και οι κανόνες του συλλαβισμού και τονισμού.

  • Επίσης, πολλά κείμενα χωρίζουν τις λέξεις στο τέλος της γραμμής με παύλες. Είναι χρήσιμο και σχετικά εύκολο επίσης, το να μπορούμε να ανακτήσουμε τις λέξεις αυτές ολόκληρες, ώστε να έχουμε αυτό που λέμε reflowable text όπου ο υπολογιστής να μπορεί να το μεταφέρει σε οθόνη ή χαρτί με διαφορετικές διαστάσεις ξανακάνοντας το χωρισμό αυτόματα όπου χρειάζεται. Ας ονομάσουμε το πρόβλημα αυτό «dehyphenation».

  • Σε ορισμένα δύσκολα κείμενα, με στήλες π.χ., που είναι πολύ κοντά μεταξύ τους, μπορεί να συμβεί κάτι αρκετά πιο καταστροφικό, να μην μπορέσει ο υπολογιστής δηλαδή να καταλάβει μόνος του τη σωστή σειρά ανάγνωσης (reading order) με αποτέλεσμα το κείμενο που θα προκύψει ως έξοδος να είναι τελείως «σκουπίδια». Στην περίπτωση αυτή ένα γλωσσικό μοντέλο μπορεί να δώσει κατάλληλη ανάδραση στο υποσύστημα της επεξεργασίας εικόνας ώστε το δεύτερο να δοκιμάσει διαφορετικές παραμέτρους για το χωρισμό σε στήλες και τον υπολογισμό σειράς ανάγνωσης, βοηθώντας έτσι στο να αποφευχθεί η καταστροφή.

  • Δεδομένου ότι αντίθετα π.χ., με την αναγνώριση ομιλίας και τη μηχανική μετάφραση, το OCR τυπικά ξεκινάει από πολύ καλή ακρίβεια ακόμα και χωρίς γλωσσικό μοντέλο, ειδικά ένα στατιστικό γλωσσικό μοντέλο τελικά μπορεί να κάνει πιο πολλή ζημιά παρά καλό αν δεν εφαρμοστεί πολύ προσεκτικά. Η google έχει ήδη κάνει κάποια έρευνα σε αυτό το ζήτημα.