Πώς να κάνετε OCR από τη γραμμή εντολών Linux χρησιμοποιώντας το Tesseract

Μπορείτε να εξαγάγετε κείμενο από εικόνες στη γραμμή εντολών Linux χρησιμοποιώντας τη μηχανή Tesseract OCR. Είναι γρήγορο, ακριβές και λειτουργεί σε περίπου 100 γλώσσες. Δείτε πώς να το χρησιμοποιήσετε.

Οπτική αναγνώριση χαρακτήρων

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

Ωστόσο, οι πρωτοπόροι σε αυτόν τον τομέα εξακολουθούσαν να έχουν υψηλή εκτίμηση. Εάν χάσατε το ηλεκτρονικό αντίγραφο ενός εγγράφου, αλλά είχατε ακόμα μια έντυπη έκδοση, το OCR θα μπορούσε να δημιουργήσει ξανά μια ηλεκτρονική, επεξεργάσιμη έκδοση. Ακόμα κι αν τα αποτελέσματα δεν ήταν 100 τοις εκατό ακριβή, αυτό ήταν μια μεγάλη εξοικονόμηση χρόνου.

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

Τα πράγματα έχουν βελτιωθεί σημαντικά από τότε. Η εφαρμογή Tesseract OCR, γραμμένη από Hewlett Packard, ξεκίνησε τη δεκαετία του 1980 ως εμπορική εφαρμογή. Ήταν ανοιχτού κώδικα το 2005 και τώρα υποστηρίζεται από Google. Έχει δυνατότητες πολλών γλωσσών, θεωρείται ένα από τα πιο ακριβή συστήματα OCR που υπάρχουν και μπορείτε να το χρησιμοποιήσετε δωρεάν.

Εγκατάσταση του Tesseract OCR

Για να εγκαταστήσετε το Tesseract OCR στο Ubuntu, χρησιμοποιήστε αυτήν την εντολή:

sudo apt-get install tesseract-ocr

Στο Fedora, η εντολή είναι:

sudo dnf install tesseract

Στο Manjaro, πρέπει να πληκτρολογήσετε:

sudo pacman -Syu tesseract

Χρήση Tesseract OCR

Θα θέσουμε ένα σύνολο προκλήσεων στο Tesseract OCR. Η πρώτη μας εικόνα που περιέχει κείμενο είναι απόσπασμα από την αιτιολογική σκέψη 63 του Γενικοί Κανονισμοί Προστασίας Δεδομένων. Ας δούμε αν το OCR μπορεί να το διαβάσει (και να μείνετε ξύπνιοι).

  Πώς να εγκαταστήσετε το θέμα εικονιδίων Papirus σε Linux

Είναι μια δύσκολη εικόνα γιατί κάθε πρόταση ξεκινά με έναν αχνό εκθέτη, που είναι χαρακτηριστικός στα νομοθετικά έγγραφα.

Πρέπει να δώσουμε στην εντολή tesseract ορισμένες πληροφορίες, όπως:

Το όνομα του αρχείου εικόνας που θέλουμε να επεξεργαστεί.
Το όνομα του αρχείου κειμένου που θα δημιουργήσει για να κρατήσει το εξαγόμενο κείμενο. Δεν χρειάζεται να παρέχουμε την επέκταση αρχείου (θα είναι πάντα .txt). Εάν υπάρχει ήδη ένα αρχείο με το ίδιο όνομα, θα αντικατασταθεί.
Μπορούμε να χρησιμοποιήσουμε την επιλογή –dpi για να πούμε στον tesseract τι είναι κουκκίδες ανά ίντσα (dpi) η ανάλυση της εικόνας είναι. Εάν δεν δώσουμε μια τιμή dpi, το tesseract θα προσπαθήσει να το καταλάβει.

Το αρχείο εικόνας μας ονομάζεται “recital-63.png” και η ανάλυσή του είναι 150 dpi. Θα δημιουργήσουμε ένα αρχείο κειμένου από αυτό που ονομάζεται “recital.txt”.

Η εντολή μας μοιάζει με αυτό:

tesseract recital-63.png recital --dpi 150

Τα αποτελέσματα είναι πολύ καλά. Το μόνο πρόβλημα είναι οι εκθέτες—ήταν πολύ αχνοί για να διαβαστούν σωστά. Μια εικόνα καλής ποιότητας είναι ζωτικής σημασίας για να έχετε καλά αποτελέσματα.

Το tesseract έχει ερμηνεύσει τους αριθμούς του εκθέτη ως εισαγωγικά (“) και σύμβολα βαθμών (°), αλλά το πραγματικό κείμενο έχει εξαχθεί τέλεια (η δεξιά πλευρά της εικόνας έπρεπε να περικοπεί για να χωρέσει εδώ).

Ο τελικός χαρακτήρας είναι ένα byte με τη δεκαεξαδική τιμή 0x0C, που είναι μια επιστροφή μεταφοράς.

Παρακάτω είναι μια άλλη εικόνα με κείμενο σε διαφορετικά μεγέθη και έντονους και πλάγιους χαρακτήρες.

Το όνομα αυτού του αρχείου είναι “bold-italic.png”. Θέλουμε να δημιουργήσουμε ένα αρχείο κειμένου που ονομάζεται “bold.txt”, οπότε η εντολή μας είναι:

tesseract bold-italic.png bold --dpi 150

Αυτό δεν δημιούργησε κανένα πρόβλημα και το κείμενο εξήχθη τέλεια.

Χρήση Διαφορετικών Γλωσσών

Υποστηρίζει το Tesseract OCR περίπου 100 γλώσσες. Για να χρησιμοποιήσετε μια γλώσσα, πρέπει πρώτα να την εγκαταστήσετε. Όταν βρείτε τη γλώσσα που θέλετε να χρησιμοποιήσετε στη λίστα, σημειώστε τη συντομογραφία της. Θα εγκαταστήσουμε υποστήριξη για το Welsh. Η συντομογραφία του είναι “cym”, που είναι συντομογραφία του “Cymru”, που σημαίνει Ουαλικά.

  Πώς να εγγράψετε το παιχνίδι σε Linux με απλή συσκευή εγγραφής οθόνης

Το πακέτο εγκατάστασης ονομάζεται “tesseract-ocr-” με τη συντομογραφία της γλώσσας στο τέλος. Για να εγκαταστήσουμε το αρχείο ουαλικής γλώσσας στο Ubuntu, θα χρησιμοποιήσουμε:

sudo apt-get install tesseract-ocr-cym

Η εικόνα με το κείμενο είναι παρακάτω. Είναι ο πρώτος στίχος του εθνικού ύμνου της Ουαλίας.

Ας δούμε αν το Tesseract OCR ανταποκρίνεται στην πρόκληση. Θα χρησιμοποιήσουμε την επιλογή -l (γλώσσα) για να ενημερώσουμε το tesseract τη γλώσσα στην οποία θέλουμε να εργαστούμε:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

Το tesseract αντιμετωπίζει τέλεια, όπως φαίνεται στο εξαγόμενο κείμενο παρακάτω. Da iawn, Tesseract OCR.

Εάν το έγγραφό σας περιέχει δύο ή περισσότερες γλώσσες (όπως ένα λεξικό από Ουαλικά σε Αγγλικά, για παράδειγμα), μπορείτε να χρησιμοποιήσετε ένα σύμβολο συν (+) για να πείτε στην tesseract να προσθέσει άλλη γλώσσα, όπως:

tesseract image.png textfile -l eng+cym+fra

Χρήση Tesseract OCR με αρχεία PDF

Η εντολή tesseract έχει σχεδιαστεί για να λειτουργεί με αρχεία εικόνας, αλλά δεν μπορεί να διαβάσει αρχεία PDF. Ωστόσο, εάν χρειάζεται να εξαγάγετε κείμενο από ένα PDF, μπορείτε να χρησιμοποιήσετε πρώτα ένα άλλο βοηθητικό πρόγραμμα για να δημιουργήσετε ένα σύνολο εικόνων. Μια μεμονωμένη εικόνα θα αντιπροσωπεύει μια σελίδα του PDF.

Το βοηθητικό πρόγραμμα pdftppm που χρειάζεστε πρέπει να έχει ήδη εγκατασταθεί στον υπολογιστή σας Linux. Το PDF που θα χρησιμοποιήσουμε για το παράδειγμά μας είναι ένα αντίγραφο της θεμελιώδους εργασίας του Άλαν Τούρινγκ για την τεχνητή νοημοσύνη, «Υπολογιστικά Μηχανήματα και Νοημοσύνη».

PDF της σελίδας τίτλου του

Χρησιμοποιούμε την επιλογή -png για να καθορίσουμε ότι θέλουμε να δημιουργήσουμε αρχεία PNG. Το όνομα αρχείου του PDF μας είναι “turing.pdf”. Θα ονομάζουμε τα αρχεία εικόνων “turing-01.png”, “turing-02.png” και ούτω καθεξής:

pdftoppm -png turing.pdf turing

Για να εκτελέσουμε το tesseract σε κάθε αρχείο εικόνας χρησιμοποιώντας μία μόνο εντολή, πρέπει να χρησιμοποιήσουμε a για βρόχο. Για κάθε ένα από τα αρχεία μας “turing-nn.png”, εκτελούμε το tesseract και δημιουργούμε ένα αρχείο κειμένου που ονομάζεται “text-” συν “turing-nn” ως μέρος του ονόματος αρχείου εικόνας:

for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;

for i in turing-??.png;  κάνε tesseract

Για να συνδυάσουμε όλα τα αρχεία κειμένου σε ένα, μπορούμε να χρησιμοποιήσουμε το cat:

cat text-turing* > complete.txt

cat text-turing* > complete.txt σε παράθυρο τερματικού.”  width=”646″ ύψος=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

Λοιπόν, πώς έγινε; Πολύ καλά, όπως μπορείτε να δείτε παρακάτω. Ωστόσο, η πρώτη σελίδα φαίνεται αρκετά προκλητική. Έχει διαφορετικά στυλ και μεγέθη κειμένου και διακόσμηση. Υπάρχει επίσης ένα κατακόρυφο “υδατογράφημα” στη δεξιά άκρη της σελίδας.

Ωστόσο, η έξοδος είναι κοντά στο πρωτότυπο. Προφανώς, η μορφοποίηση χάθηκε, αλλά το κείμενο είναι σωστό.

Το κατακόρυφο υδατογράφημα μεταγράφηκε ως μια γραμμή ασυναρτησίες στο κάτω μέρος της σελίδας. Το κείμενο ήταν πολύ μικρό για να διαβαστεί με ακρίβεια από το tesseract, αλλά θα ήταν αρκετά εύκολο να το βρείτε και να το διαγράψετε. Το χειρότερο αποτέλεσμα θα ήταν αδέσποτοι χαρακτήρες στο τέλος κάθε γραμμής.

Περιέργως, τα μεμονωμένα γράμματα στην αρχή της λίστας ερωτήσεων και απαντήσεων στη δεύτερη σελίδα έχουν αγνοηθεί. Η ενότητα από το PDF φαίνεται παρακάτω.

Όπως μπορείτε να δείτε παρακάτω, οι ερωτήσεις παραμένουν, αλλά τα «Q» και «A» στην αρχή κάθε γραμμής χάθηκαν.

Τα διαγράμματα επίσης δεν θα μεταγραφούν σωστά. Ας δούμε τι συμβαίνει όταν προσπαθούμε να εξαγάγουμε αυτό που φαίνεται παρακάτω από το Turing PDF.

Ένα διάγραμμα του

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

Και πάλι, το tesseract πάλεψε με το μικρό μέγεθος των συνδρομητών και αποδόθηκαν εσφαλμένα.

Για να είμαστε δίκαιοι, όμως, ήταν ακόμα ένα καλό αποτέλεσμα. Δεν μπορέσαμε να εξαγάγουμε απλό κείμενο, αλλά στη συνέχεια, αυτό το παράδειγμα επιλέχθηκε σκόπιμα επειδή παρουσίαζε μια πρόκληση.

Μια καλή λύση όταν τη χρειάζεστε

Το OCR δεν είναι κάτι που θα χρειαστεί να χρησιμοποιείτε καθημερινά. Ωστόσο, όταν προκύψει η ανάγκη, είναι καλό να γνωρίζετε ότι έχετε έναν από τους καλύτερους κινητήρες OCR στη διάθεσή σας.