Tesseract -Ocr στο Visual Studio - Αναγνωρίστε μια σελίδα κειμένου. Διδασκαλία Tesseract Αυτό που χρειαζόμαστε

Tesseractείναι μια δωρεάν πλατφόρμα OCR που η Google χάρισε στην κοινότητα το 2006. Εάν γράφετε λογισμικό OCR, τότε μάλλον έπρεπε να απευθυνθείτε στις υπηρεσίες αυτής της ισχυρής βιβλιοθήκης. Και αν δεν αντιμετώπισε το κείμενό σας, τότε έχετε μόνο μία διέξοδο - να της μάθετε. Αυτή η διαδικασία είναι αρκετά περίπλοκη και γεμάτη με όχι εμφανείς και μερικές φορές εντελώς μαγικές ενέργειες. Υπάρχει μια πρωτότυπη περιγραφή. Μου πήρε σχεδόν μια ολόκληρη μέρα για να κατανοήσω όλο το βάθος του, οπότε εδώ θέλω να σώσω, ελπίζω, μια πιο κατανοητή εκδοχή του. Έτσι για να βοηθήσετε τον εαυτό σας και τους άλλους να πάτε πιο γρήγορα την επόμενη φορά.

0. Τι χρειαζόμαστε

  • Η ίδια η Tesseract.
Υπάρχουν συγκροτήματα αυτής της βιβλιοθήκης κάτω από τα παράθυρα (μπορείτε να κατεβάσετε το πρόγραμμα εγκατάστασης από το επίσημο αποθετήριο) και κάτω από το Linux. Για τις περισσότερες διανομές Linux, το tesseract μπορεί να εγκατασταθεί απλά μέσω sudo apt-get install tesseract-ocr, για το μοντέρνο Elementary OS μου έπρεπε να προσθέσω μια πηγή:
gedit /etc/apt/sources.list
deb http://notesalexp.net/debian/precise/ precise main
wget -O - http://notesalexp.net/debian/alexp_key.asc
apt-key προσθέστε alexp_key.asc
apt-get ενημέρωση
apt-get install tesseract-ocr
  • Εικόνα με κείμενο για εκπαίδευση
Είναι επιθυμητό αυτό να είναι πραγματικό κείμενο, το οποίο στη συνέχεια θα πρέπει να αναγνωριστεί. Είναι σημαντικό κάθε χαρακτήρας της γραμματοσειράς να εμφανίζεται στο σαρωμένο τμήμα τουλάχιστον 5 φορές και κατά προτίμηση 20 φορές. Μορφή Tiff, χωρίς συμπίεση, κατά προτίμηση όχι σε πολλές σελίδες. Πρέπει να υπάρχουν σαφώς διακριτοί χώροι μεταξύ όλων των χαρακτήρων. Βάζουμε την εικόνα μας σε ξεχωριστό κατάλογο και την ονομάζουμε ως<код языка>.<имя шрифта>.exp<номер>.tif Μπορεί να υπάρχουν περισσότερες από μία εικόνες και να διαφέρουν μόνο από τον αριθμό στο όνομα του αρχείου. Η μορφή ονομασίας αρχείων είναι πολύ σημαντική. Τα αρχεία με λανθασμένα ονόματα του βοηθητικού προγράμματος που θα χρησιμοποιήσουμε θα καταχραστούν από σφάλματα κατάτμησης κ.λπ. Για βεβαιότητα, θα υποθέσουμε ότι μελετάμε τη γλώσσα ccc και τη γραμματοσειρά eee. Έτσι ονομάζουμε το αρχείο με τη σάρωση του δείγματος εκπαίδευσης ccc.eee.exp0.tif

1. Δημιουργήστε και επεξεργαστείτε ένα αρχείο κουτιού
Γι'αυτό. για να επισημάνετε τους χαρακτήρες στην εικόνα και να ρυθμίσετε την αντιστοιχία τους σε utf-8 χαρακτήρες στο πλαίσιο κειμένου χρησιμοποιούνται αρχεία. Αυτά είναι συνηθισμένα αρχεία κειμένου στα οποία κάθε χαρακτήρας αντιστοιχεί σε μια συμβολοσειρά με τον χαρακτήρα και τις συντεταγμένες του ορθογωνίου σε εικονοστοιχεία. Αρχικά, το αρχείο δημιουργείται από το βοηθητικό πρόγραμμα από το πακέτο tesseract:
tesseract ccc.eee.exp0.tif ccc.eee.exp0 batch.nochop makebox
πήρα το αρχείο ccc.eee.exp0.box στον τρέχοντα κατάλογο. Ας το ρίξουμε μια ματιά. Ταιριάζουν ακριβώς οι χαρακτήρες στην αρχή της γραμμής με τους χαρακτήρες του αρχείου; Αν ναι, τότε δεν χρειάζεται να εκπαιδεύσετε τίποτα, μπορείτε να κοιμηθείτε ήσυχοι. Στην περίπτωσή μας, πιθανότατα τα σύμβολα δεν θα συμπίπτουν ούτε στην ουσία ούτε στην ποσότητα. Εκείνοι. Το tesseract με το προεπιλεγμένο λεξικό δεν αναγνώρισε μόνο χαρακτήρες, αλλά επίσης μέτρησε μερικούς από αυτούς ως δύο ή περισσότερους. Perhapsσως κάποιοι από τους χαρακτήρες μας να «κολλήσουν», δηλ. θα πέσει στο γενικό πλαίσιο και θα αναγνωριστεί ως ένα. Όλα αυτά πρέπει να διορθωθούν πριν προχωρήσουμε. Το έργο είναι κουραστικό και επίπονο, αλλά ευτυχώς υπάρχουν πολλά βοηθητικά προγράμματα τρίτων για αυτό. Για παράδειγμα, χρησιμοποίησα το pyTesseractTrainer-1.03. Ανοίγουμε μια εικόνα με αυτήν και θα τραβήξει ένα αρχείο κουτιού με το ίδιο όνομα.
Πέρασε μισή μέρα ... Κλείνεις το pyTesseractTrainer με βαθύ αίσθημα ικανοποίησης (δεν ξέχασες να αποθηκεύσεις το αποτέλεσμα, σωστά;) Και έχεις το σωστό αρχείο κουτιού. Τώρα μπορείτε να προχωρήσετε στο επόμενο βήμα.

2. Εκπαιδεύστε το Tesseract
tesseract ccc.eee.exp0.tif ccc.eee.exp0 nobatch box.train
Παίρνουμε πολλά λάθη, αλλά αναζητήστε κάτι σαν "Βρέθηκαν 105 καλές σταγόνες" στο τέλος. Εάν ο αριθμός είναι σημαντικά μεγαλύτερος από τον αριθμό των "μελετημένων" συμβόλων, τότε υπάρχει πιθανότητα η εκπαίδευση στο σύνολό της να ήταν επιτυχής. Διαφορετικά, επιστρέφουμε στην αρχή. Ως αποτέλεσμα αυτού του βήματος, έχετε ένα αρχείο ccc.eee.exp0.tr

3. Εξαγάγετε το σύνολο χαρακτήρων
unicharset_extractor ccc.eee.exp0.box
Παίρνουμε ένα σύνολο χαρακτήρων με τη μορφή ενός αρχείου unicharset στον τρέχοντα κατάλογο, όπου κάθε χαρακτήρας και τα χαρακτηριστικά του βρίσκονται σε ξεχωριστή γραμμή. Εδώ το καθήκον μας θα είναι να ελέγξουμε και να διορθώσουμε τα χαρακτηριστικά των συμβόλων (η δεύτερη στήλη στο αρχείο). Για μικρά γράμματα του αλφαβήτου θέτουμε το σύμβολο 3, για μεγάλα 5, για σημεία στίξης 10 για αριθμούς 8, όλα τα άλλα (όπως + = -) σημειώνουμε 0. Κινέζικοι και ιαπωνικοί χαρακτήρες σημειώνουμε 1. Συνήθως όλα τα σημάδια είναι σωστά, οπότε αυτό το στάδιο είναι πολύς χρόνος που δεν θα σας πάρει.

4. Περιγραφή του στυλ γραμματοσειράς
Δημιουργήστε ένα αρχείο ccc.font_properties με μία μόνο γραμμή: eee 0 0 0 0 0. Εδώ, πρώτα, γράψτε το όνομα της γραμματοσειράς και, στη συνέχεια, με τον αριθμό 1 ή 0 σημειώστε την παρουσία συμβόλων στυλ (αντίστοιχα, πλάγια έντονα έντονα σταθερά serif fraktur ). Στην περίπτωσή μας, δεν υπάρχουν στυλ, οπότε τα αφήνουμε όλα στο μηδέν.

5. Συμπλέγματα μορφών, πρωτότυπα και άλλα μαγικά
Για περαιτέρω μελέτη, πρέπει να πραγματοποιήσουμε άλλες τρεις επεμβάσεις. Μπορείτε να προσπαθήσετε να κατανοήσετε το νόημά τους από την επίσημη περιγραφή, δεν το έκανα :). Εμείς απλά κάνουμε:
συμπλέγματος σχήματος -F ccc.font_properties -U unicharset ccc.eee.exp0.tr
... θα εμφανιστεί το αρχείο με δυνατότητα διαμόρφωσης
και μετά:
mftraining -F ccc.font_properties -U unicharset -O ccc.unicharset ccc.eee.exp0.tr
... πάρτε τα αρχεία ccc.unicharset, inttemp, pffmtable
και τελικά:
cntraining ccc.eee.exp0.tr
... παίρνουμε το αρχείο normproto.

6. Λεξικά
Θεωρητικά, η συμπλήρωση λεξικών συχνά χρησιμοποιούμενων λέξεων (και λέξεων γενικά) βοηθά τον Tesseract να κατανοήσει τις σκαρίφεις σας. Δεν είναι απαραίτητο να χρησιμοποιείτε λεξικά, αλλά αν θέλετε ξαφνικά, δημιουργούμε αρχείαλίστα συχνών_ λέξεων και λίστας λέξεων στην οποία εισάγουμε (το καθένα σε νέα γραμμή), αντίστοιχα, συχνά χρησιμοποιούμενες και απλώς λέξεις της γλώσσας.
Για να μετατρέψετε αυτές τις λίστες στη σωστή μορφή, κάντε τα εξής:
wordlist2dawg Συχνές_Λέξεις_ λίστα ccc.freq-dawg ccc.unicharset

wordlist2dawg words_list ccc.word-dawg ccc.unicharset

7. Το τελευταίο μυστηριώδες αρχείο
Το όνομά του είναι unicharambigs. Θεωρητικά, θα πρέπει να επιστήσει την προσοχή του Tesseract σε παρόμοιους χαρακτήρες. Αυτό είναι ένα αρχείο κειμένου, κάθε γραμμή οριοθετημένη με καρτέλα περιγράφει ζεύγη γραμμών που ενδέχεται να μπερδευτούν όταν αναγνωριστούν. Η μορφή του αρχείου περιγράφεται πλήρως στην τεκμηρίωση, δεν το χρειάστηκα και το άφησα κενό.

8. Τελευταία εντολή
Όλα τα αρχεία πρέπει να μετονομάζονται έτσι ώστε τα ονόματά τους να ξεκινούν με το όνομα της γλώσσας. Εκείνοι. θα έχουμε μόνο αρχεία στον κατάλογο:

ccc.box
ccc.inttemp
ccc.pffmtable
ccc.tif
ccc.font_properties
ccc.normproto
ccc. με δυνατότητα αλλαγής
ccc.tr
ccc.unicharset

Και τέλος, εκτελούμε:
συνδυασμός_tessdata ccc.
(!) Η περίοδος είναι υποχρεωτική. Ως αποτέλεσμα, λαμβάνουμε το αρχείο ccc.traineddata, το οποίο θα μας επιτρέψει να αναγνωρίσουμε περαιτέρω τη μυστηριώδη νέα μας γλώσσα.

9. Ελέγξτε αν άξιζε τον κόπο :)
Τώρα ας προσπαθήσουμε να αναγνωρίσουμε το δείγμα μας χρησιμοποιώντας το ήδη εκπαιδευμένο Tesseract:
sudo cp ccc.traineddata / usr / share / tesseract-ocr / tessdata /
tesseract ccc.tif έξοδος -l ccc
Τώρα κοιτάμε το output.txt και χαρούμε (ή θρηνούμε, ανάλογα με το αποτέλεσμα).

Εάν υπάρχουν έτοιμες λύσεις, δεν έχει νόημα να επανεφεύρουμε πατερίτσες και ποδήλατα. Με ιδιαίτερο κυνισμό, αυτή η δήλωση αποδείχθηκε από τους συντάκτες του κρυπτογραφητή, ο οποίος χρησιμοποίησε το CryptoAPI για δικούς του σκοπούς :). Ισχύει επίσης για τη λύση του σημερινού μας έργου - αποκωδικοποίηση captcha (φυσικά για εκπαιδευτικούς σκοπούς). Προχωρήστε και ξεκινήστε το Visual Studio!

Εισαγωγή

Η όλη διαδικασία της επερχόμενης εργασίας μπορεί να χωριστεί υπό όρους σε διάφορα στάδια:

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

Αυτό θα μας βοηθήσει:

  • AForgeNet - βιβλιοθήκες όρασης υπολογιστή και τεχνητής νοημοσύνης.
  • Το Tesseract είναι ένα πρόγραμμα αναγνώρισης κειμένου.
  • Fanndotnetwrapper - περιτύλιγμα .NET για το νευρωνικό δίκτυο FANN.
  • Αλγόριθμος αναζήτησης συνδεσιμότητας CCLA από τον Omar Gameel Salem.

Πηγή στον ιστότοπο dvd

Μην ξεχάσετε να κατεβάσετε το θέμα, θα είναι χρήσιμο όταν διαβάζετε αυτό το άρθρο. Χωρίς κακόβουλο λογισμικό, χωρίς εξτρεμισμό - μόνο καθαρή επιστήμη, μόνο τεχνολογίες OCR, μόνο σκληροπυρηνικό!

Προπαρασκευαστικό στάδιο

Εκκινήστε το Visual Studio και δημιουργήστε ένα νέο έργο παραθύρου C #. Ας το ανοίξουμε στον Explorer για να αντιγράψουμε τα απαιτούμενα αρχεία εκεί.


Για την εκπαίδευση του νευρωνικού δικτύου FANN, χρησιμοποιήθηκε ένα μέρος του κώδικα από το Tesseract, η διαφορά είναι ότι δημιουργούμε ένα αρχείο κειμένου train.tr, στο οποίο η πρώτη γραμμή είναι ο αριθμός των εικόνων, ο αριθμός των σημείων σε κάθε ένα (πλάτος πολλαπλασιασμένο από το ύψος) και τον αριθμό των εξόδων (γράμματα, τα οποία ψάχνουμε). Πριν από όλα αυτά, η ίδια η εικόνα υφίσταται υποχρεωτική δυαδικότητα για να επιλέξετε μόνο δύο καταστάσεις από κάθε σημείο (1 - μαύρο, 0 - λευκό) και αποθηκεύεται περαιτέρω στο ίδιο αρχείο σε όλες τις ακόλουθες γραμμές. Για λόγους ευκολίας και δυνατότητας χρήσης διαφορετικών προ-δημιουργημένων εκπαιδευμένων αρχείων ann, δημιουργήθηκε ένα επιπλέον αρχείο κειμένου CONFIG.txt. Αποτελείται από μία γραμμή και υποδεικνύει τον αριθμό των σημείων και των εξόδων με τις τιμές τους. Η τυχαία εκκίνηση ενός ελέγχου captcha σε άλλο αρχείο ann δεν θα λειτουργήσει.

String a = File.ReadAllText (SaveFilesPath + "CONFIG.txt"); string b = a.Split (""); int SumPix = Convert.ToInt32 (b); int Outpt = Convert.ToInt32 (β. Μήκος); στρώματα uint = ((uint) SumPix, (uint) στρώμαS, (uint) Outpt); net.CreateStandardArray (στρώματα); net.RandomizeWeights (-0.1, 0.1); net.SetLearningRate (0.7f); Δεδομένα TrainingData = νέα TrainingData (); data.ReadTrainFromFile (SaveFilesPath + "train.tr"); net.TrainOnData (δεδομένα, 1000, 0, 0.001f); net.Save (SaveFilesPath + "FANNLearning.ann");

Λαμβάνουμε τη διαμόρφωση, διαβάζουμε τις παραμέτρους, ο αριθμός των επιπέδων (επιπέδων) σύμφωνα με τη σύσταση της Wikipedia ορίζεται σε 120, όλα τα άλλα επιλέχθηκαν τυχαία ή κατασκοπεύτηκαν στον Ιστό. Η ταχύτητα εκμάθησης εξαρτάται από τη δύναμη του υλικού σας και από όσα γράφονται παραπάνω. Για παράδειγμα, το i7-4702MQ με 6500 εικόνες καταλήφθηκε από έναν πυρήνα για 20-30 λεπτά.

Βήμα έκτο. Αναγνώριση

Στο τελικό στάδιο, εφαρμόστηκαν δύο προσεγγίσεις, αλλά αυτή που εκπαιδεύτηκε χρησιμοποιείται. Το Tesseract 3.02 και το FANN βρίσκονται στην κάτω αριστερή πλευρά του κύριου παραθύρου. Το πρώτο μπορεί να αναζητήσει στα Αγγλικά (επιλέξτε χαρακτήρες από την αναπτυσσόμενη λίστα), στα Ρωσικά, στα Μαθηματικά και στο λεξικό του χρήστη. Η αναζήτηση λεξικού πραγματοποιείται αυτόματα και όλες οι διαθέσιμες επισημαίνονται στην επεξήγηση εργαλείου. Το δεύτερο αναγνωρίζει το κείμενο χρησιμοποιώντας το κουμπί FANNOCR και εμφανίζει το αποτέλεσμα ανάλυσης για κάθε επιλεγμένο χαρακτήρα στο ημερολόγιο (αριστερό μέρος του παραθύρου). Είναι πολύ βολικό να δούμε γιατί το νευρωνικό δίκτυο επέλεξε αυτήν ή αυτήν την έξοδο. Ας δούμε πώς λειτουργεί αυτό στην περίπτωση ενός νευρωνικού δικτύου.

OCR ιδιωτικής συμβολοσειράς (Bitmap img) (... (int whx = img. Πλάτος * img. Ightψος; αν (SUMMPIX! = Whx) ( / * Εμφάνιση σφάλματος, ο αριθμός των εικονοστοιχείων δεν ταιριάζει * /) διπλή εισαγωγή = GetPix (img); διπλό αποτέλεσμα = net.Run (είσοδος); if (tempanswer.Length! = Result.Length) ( / * Εμφάνιση σφάλματος, διαφορετικός αριθμός εξόδων * /) int maxN = FindMax (αποτέλεσμα); απάντηση = Convert.ToString (tempanswer); εάν (ToLogEvent! = Null) ToLogEvent (αποτέλεσμα, tempanswer, απάντηση); ...))

Πήραμε μια εικόνα από τη δημόσια μέθοδο, όπου υλοποιείται το net.CreateFromFile (SaveFilesPath + "FANNLearning.ann") και διαβάζοντας το αρχείο ρυθμίσεων, το tempanswer είναι μια μεταβλητή ίση με b, παραθέτει τα γράμματα που ψάχνουμε. Συγκρίνουμε τον αριθμό των εικονοστοιχείων, τα γράφουμε σε έναν πίνακα και τα τρέχουμε μέσω του εκπαιδευμένου ann, αναζητώντας το υψηλότερο δυνατό ποσοστό αντιστοίχισης, στη συνέχεια στέλνουμε το αποτέλεσμα σε ένα συμβάν, επιλέγοντας μία έξοδο και αποδίδοντας το γράμμα σε αυτό.

Συζητώντας τα αποτελέσματα

Τα αποτελέσματα των δοκιμών μου εξαρτώνται σε μεγάλο βαθμό από την ποσότητα και την ποιότητα των εικόνων για εκπαίδευση, και στην περίπτωση του νευρωνικού δικτύου FANN, επίσης από τον αριθμό των εξόδων. Κατά μέσο όρο, ένα captcha που υπέκυψε στα φίλτρα είχε correct 80% σωστή αναγνώριση, εδώ πολλά εξαρτώνται από την επιμονή και την επιθυμία - αυτό που διδάσκετε είναι αυτό που παίρνετε. Το κυριότερο είναι ότι λειτουργεί.

συμπέρασμα

Όλα όσα περιγράφονται στο άρθρο μπορούν να εφαρμοστούν για την επίλυση πολλών άλλων προβλημάτων. Για παράδειγμα, αναζητώντας πληροφορίες για ένα άρθρο, συνάντησα μια λεπτομερή ανάλυση της αναγνώρισης της εικόνας ενός αυτοκινήτου σε χώρο στάθμευσης. Ενεργοποιήστε τη φαντασία και το Visual Studio! 🙂

Μου πήρε να λάβω τις τιμές των καταγεγραμμένων αριθμών. Οι αριθμοί λήστεψαναπό την οθόνη.

Σκέφτηκα, πρέπει να δοκιμάσω OCR; Δοκίμασε Tesseract.

Παρακάτω θα σας πω πώς προσπάθησα να προσαρμόσω το Tesseract, γιατί το εκπαίδευσα και τι προέκυψε από αυτό. Στο έργο για το github, υπάρχει ένα σενάριο cmd που αυτοματοποιεί τη διαδικασία κατάρτισης όσο το δυνατόν περισσότερο και τα δεδομένα στα οποία πραγματοποίησα την εκπαίδευση. Με μια λέξη, υπάρχουν όλα όσα χρειάζεστε για να διδάξετε στο Tesseract κάτι χρήσιμο αμέσως.

Εκπαίδευση

Κλωνοποιήστε το αποθετήριο ή κάντε λήψη αρχείο zip (~ 6Mb). Εγκαταστήστε το tesseract 3.01 από τον επίσημο ιστότοπο. Εάν δεν είναι ήδη εκεί, τότε από τον υποκατάλογο zip-archive / distros.

Μεταβείτε στο φάκελο δείγματα, εκτελέστε montage_all.cmd
Αυτό το σενάριο θα δημιουργήσει την τελική εικόνα δείγματα / total.png, δεν μπορείτε να εκτελέσετε το σενάριο, επειδή Το έχω ήδη τοποθετήσει στο ριζικό φάκελο του έργου μου.

Γιατί να προπονηθώ;

Perhapsσως το αποτέλεσμα να είναι καλό ακόμη και χωρίς προπόνηση; Ας ελέγξουμε.
./exp1 - όπως είναι> tesseract ../total.png σύνολο

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

model_total.txt Αναγνώριση
Προκαθορισμένο
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255

προεπιλεγμένα σφάλματα αναγνώρισης

Μπορεί να φανεί ότι υπάρχουν πολλά λάθη. Αν κοιτάξετε προσεκτικά, θα παρατηρήσετε ότι η υποδιαστολή δεν αναγνωρίζεται, οι αριθμοί 6 και 8 αναγνωρίζονται ως 5. Η προπόνηση θα σας βοηθήσει να απαλλαγείτε από λάθη;

Προπόνηση

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

Για να ολοκληρώσετε το εκπαιδευτικό πρόγραμμα. / Exp2 - εκπαιδευμένο> τρένο.cmd

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

Τα αποτελέσματα αυτής της εργασίας γράφονται στο αρχείο total.box, το οποίο μοιάζει με αυτό:
2 46 946 52 956 0
7 54 946 60 956 0
3 46 930 52 940 0
3 54 930 60 940 0
3 46 914 52 924 0
9 53 914 60 924 0
6 31 898 38 908 0
2 40 898 46 908 0
5 48 898 54 908 0
0 59 898 66 908 0

Εδώ στην πρώτη στήλη υπάρχει ένα σύμβολο και σε 2 - 5 στήλες οι συντεταγμένες της κάτω αριστερής γωνίας του ορθογωνίου, το ύψος και το πλάτος του.

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

Αφού ξεκινήσετε. / Exp2 - train> java -jar jTessBoxEditor -0.6jTessBoxEditor.jar, ανοίξτε το αρχείο. / Exp2 - train / total.png και το αρχείο. / Exp2 - train / total.box και τα ορθογώνια που ορίζονται σε αυτό ανοίξει αυτόματα θα τοποθετηθεί στην εικόνα της εκπαίδευσης.

Στα αριστερά είναι το περιεχόμενο του αρχείου total.box, στα δεξιά είναι η εικόνα εκπαίδευσης. Η ενεργή γραμμή του αρχείου total.box βρίσκεται πάνω από την εικόνα.

Τα πλαίσια εμφανίζονται με μπλε χρώμα και το πλαίσιο που αντιστοιχεί στην ενεργή γραμμή εμφανίζεται με κόκκινο χρώμα.

Διορθώσαμε όλα τα λάθος 5 για τα σωστά 6 και 8, πρόσθεσα γραμμές με τους ορισμούς όλων των δεκαδικών στο αρχείο και αποθηκεύτηκα total.box

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

Για να χρησιμοποιήσετε τα αποτελέσματα της εκπαίδευσης για αναγνώριση, πρέπει να εκτελέσετε tesseract με το διακόπτη -l ttn
./exp2 -εκπαιδευμένος/> tesseract ../total.png συνολικά εκπαιδευμένος -l ttn

Μπορεί να φανεί ότι όλα τα ψηφία έχουν αρχίσει να αναγνωρίζονται σωστά, αλλά η υποδιαστολή δεν αναγνωρίζεται με κανέναν τρόπο.

model_total.txt Αναγνώριση
Προκαθορισμένο
Αναγνώριση
μετά την προπόνηση
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255
27
33
39
625 05*
9
163
1,740 10*
15
36
45
72
324
468
93
453
1,200 10*
80 10*
152 25*
158 25*
176 07*
97 50*
170 62*
54
102
162
78
136 50*
443 62*
633 74*
24
1,579 73*
1,576 73*
332 23*
957 69*
954 69*
963 68*
1,441 02*
1,635 34*
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459 69*
456 69*
198
61
255

μαθησιακά λάθη

Μεγέθυνση της εικόνας

Μπορείτε να κλιμακώσετε με διαφορετικούς τρόπους, δοκίμασα δύο τρόπους: κλίμακα και αλλαγή μεγέθους

total-scaled.png (απόσπασμα) total-resized.png (απόσπασμα)
μετατροπή total.png total -scaled.png -κλίμακα "208x1920" μετατροπή total.png total -resized.png -μεγέθη "208x1920"

Δεδομένου ότι οι εικόνες συμβόλων έχουν αυξηθεί με τις ίδιες τις εικόνες, τα δεδομένα εκπαίδευσης κάτω από τον κώδικα ttn είναι ξεπερασμένα. Επομένως, περαιτέρω αναγνώρισα ttn χωρίς το διακόπτη -l.

Μπορεί να φανεί ότι στην εικόνα το total-scaled.png το tesseract συγχέει το 7-ku με το 2-ka και δεν το συγχέει στο total-resized.png. Η υποδιαστολή προσδιορίζεται σωστά και στις δύο εικόνες. Η αναγνώριση εικόνας total-resized.png είναι σχεδόν τέλεια. Υπάρχουν μόνο τρία σφάλματα - ένα διάστημα μεταξύ ψηφίων στους αριθμούς 21, 114 και 61.

Αλλά αυτό το σφάλμα δεν είναι κρίσιμο, αφού μπορεί να διορθωθεί εύκολα αφαιρώντας απλά κενά από τις γραμμές.

σφάλματα αναγνώρισης total-scaled.png

σφάλματα αναγνώρισης total-resized.png

model_total.txt Αναγνώριση
Προκαθορισμένο
Αναγνώριση
μετά την προπόνηση
total-scaled.png total-resized.png
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255
27
33
39
625 05*
9
163
1,740 10*
15
36
45
72
324
468
93
453
1,200 10*
80 10*
152 25*
158 25*
176 07*
97 50*
170 62*
54
102
162
78
136 50*
443 62*
633 74*
24
1,579 73*
1,576 73*
332 23*
957 69*
954 69*
963 68*
1,441 02*
1,635 34*
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459 69*
456 69*
198
61
255
22*
33
39
625.05
9
163
1,240.10*
15
36
45
22*
324
468
93
453
1,200.10
80.10
152.25
158.25
126.02*
92.50*
120.62*
54
102
162
28*
136.50
443.62
633.24*
24
1,529.23*
1,526.23*
332.23
952.69*
954.69
963.68
1,441.02
1,635.34
50
26*
168
2 1*
48
30
42
108
126
144
1 14*
462
328*
522
60
240
246
459.69
456.69
198
6 1*
255
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
2 1*
48
30
42
108
126
144
1 14*
462
378
522
60
240
246
459.69
456.69
198
6 1*
255

Digηφιοποίηση εικόνων μία τη φορά

Εντάξει, τι γίνεται αν θέλετε να ψηφιοποιήσετε τις εικόνες μία προς μία σε πραγματικό χρόνο;

Δοκιμάζω ένα κάθε φορά.
./exp5 - ένα προς ένα> για / r% i στο (* .png) κάντε tesseract "% i" "% i"
Δύο και τριψήφιοι αριθμοί δεν ανιχνεύονται καθόλου!

625.05
1740.10

Itηφιοποίηση σε μικρές συσκευασίες

Και αν πρέπει να ψηφιοποιήσετε εικόνες σε παρτίδες πολλών εικόνων (6 ή 10 σε μια παρτίδα); Δοκιμάζω δέκα.
./exp6 - δέκα στη γραμμή> tesseract teninline.png teninline

Αναγνωρισμένο, και μάλιστα χωρίς κενό στον αριθμό 61.

συμπεράσματα

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

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

Η αναγνώριση των ξεχωριστών «κοντών» διψήφιων και τριψήφιων αριθμών δεν είναι ικανοποιητική - οι αριθμοί πρέπει να συλλέγονται σε πακέτα.

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

Το άρθρο συζητά τη διαδικασία διδασκαλίας της ρωσικής γλώσσας στο ανοιχτό σύστημα OCR Tesseract που αναπτύχθηκε από τη Hewlett-Packard.

[Vlasov Igor (igorvlassov at narod dot ru)]

Έψαχνα για OCR εδώ μόλις τώρα για ένα αγγλόφωνο έργο. Και στην πορεία γνώρισα την κατάσταση των πραγμάτων σχετικά με τη μητρική γλώσσα. Δεν βρήκα δωρεάν OCR ικανό να αναγνωρίζει τη μητρική ομιλία. Αλλά συνάντησα το έργο tesseract. Είναι ένα πρώην εμπορικό OCR πολλαπλών πλατφορμών που αναπτύχθηκε από τον Hevlet Packard. Τώρα, καταρχάς, διανέμεται υπό την άδεια Apache v.2. Και δεύτερον, μπορείτε να προσπαθήσετε να της διδάξετε κάποια νέα γλώσσα, κάτι που θα προσπαθήσουμε να κάνουμε. Έτσι, διαβάζουμε το εγχειρίδιο που ονομάζεται TrainingTesseract:

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

Κατά την προετοιμασία του αρχείου εκπαίδευσης, λάβετε υπόψη τα ακόλουθα:

    απαιτείται ο ελάχιστος αριθμός παραδειγμάτων κάθε χαρακτήρα. Το 10 είναι καλό, αλλά το 5 είναι αρκετό για σπάνιους χαρακτήρες και για τους συχνούς χρειάζεστε τουλάχιστον 20.

    δεν μπορείτε να ομαδοποιήσετε όλους τους χαρακτήρες χωρίς γράμματα, πρέπει να κάνετε το κείμενο πιο ρεαλιστικό, για παράδειγμα:
    υπήρχε εσπεριδοειδές στα πυκνά του νότου, ναι, αλλά ένα ψεύτικο δείγμα. 0123456789 [προστασία ηλεκτρονικού ταχυδρομείου]#$%^&(),.{}<>/? - τρομερό. Πολύ καλύτερα:στα πυκνά (νότια) ζούσε (ήταν) εσπεριδοειδή, ναι! αλλά?<фальшивый> $3456.78 αντίγραφο# 90 / ντομάτα "12,5%

    θα ήταν ωραίο να επεκτείνουμε το κείμενο αυξάνοντας το διάστιχο και τη διαφορά χαρακτήρων.

    τα δεδομένα εκπαίδευσης πρέπει να χωρούν σε μία σελίδα.

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

Στη συνέχεια, πρέπει να εκτυπώσετε και να σαρώσετε ή να χρησιμοποιήσετε κάποια άλλη μέθοδο για να λάβετε μια εικόνα της σελίδας εκπαίδευσης. Μπορούν να χρησιμοποιηθούν έως 32 σελίδες. Είναι καλύτερο να δημιουργείτε σελίδες με μείγμα γραμματοσειρών και στυλ, συμπεριλαμβανομένων έντονων και πλάγιων.

Θα προσπαθήσω να το κάνω μόνο για τη γραμματοσειρά Thorndale AMT, η οποία στην επιφάνεια εργασίας μου κάτω από το SUSE10 στο OpenOffice μοιάζει σχεδόν με το Times New Roman στα Windows. Έτσι, δημιουργώ ένα ξεχωριστό αρχείο με το παραπάνω κείμενο σχετικά με το citrus fontfile.odt, εκτυπώνω, σαρώνω και αποθηκεύω σε ασπρόμαυρο BMP fontfile.bmp.

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

tesseract fontfile.bmp fontfile batch.nochop makebox

Το αποτέλεσμα είναι ένα αρχείο fontfile.txt που πρέπει να μετονομαστεί σε fontfile.box

Να τι έχω εκεί:

Μ 85 132 111 154

Ζ 114 137 130 154

Χ 133 137 150 154

{ 170 130 180 162

m 186 137 210 154

r 214 137 228 154

α 233 137 248 154

} 254 130 264 162

Μ 284 137 306 154

Τώρα το πιο δύσκολο μέρος - πρέπει να επεξεργαστείτε αυτό το αρχείο στον επεξεργαστή, στο οποίο μπορείτε να αντικαταστήσετε τους λάθος χαρακτήρες με αυτούς που χρειάζεστε. Χρησιμοποιώ την Kate.

Το Ops φαίνεται να έχει αντικατασταθεί με 2 χαρακτήρες:

Μ 85 132 111 154

Σε αυτή την περίπτωση είναι απαραίτητο να συνδυάσετε τα περικλειόμενα ορθογώνια ως εξής:

    Ο πρώτος αριθμός (αριστερά) πρέπει να είναι τουλάχιστον 2 γραμμές (67)

    Ο δεύτερος αριθμός (κάτω) πρέπει να είναι το ελάχιστο 2 γραμμών (132)

    Ο τρίτος αριθμός (δεξιά) πρέπει να είναι το πολύ 2 γραμμές (111)

    Ο τέταρτος αριθμός (πάνω) πρέπει να είναι το πολύ 2 γραμμές (154)

έτσι: u 67 132 111 154

Σημείωση: Το σύστημα συντεταγμένων που χρησιμοποιείται σε αυτό το αρχείο ξεκινά με (0,0) και τρέχει από κάτω προς τα πάνω και από αριστερά προς τα δεξιά.

Ο Φουχ φαίνεται να έχει διορθώσει. Τώρα τρέχουμε το tesseract σε λειτουργία εκμάθησης:

tesseract fontfile.bmp junk nobatch box.train

και κοιτάξτε στο stderr (ή tesseract.log στα Windows). Εάν υπάρχουν σφάλματα όπως το FATALITY,

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

APPLY_BOXES: FATALITY - 0 δείγματα με ετικέτα "%" - ο στόχος είναι 2

Πλαίσια που διαβάζονται από το αρχείο αρχείων: 89

Αρχικά επισημασμένες σταγόνες: 87 σε 3 σειρές

Εντοπίστηκαν αστοχίες κουτιού: 2

Duped blobs for rebalance: 0

Το "%" έχει τα λιγότερα δείγματα: 0

Σύνολο λέξεων χωρίς ετικέτα: 1

Τελικές λέξεις με ετικέτα: 87

Δημιουργία δεδομένων εκπαίδευσης

ΕΚΠΑΙΔΕΥΣΗ ... Όνομα γραμματοσειράς = UnknownFont.

Δημιουργήθηκαν δεδομένα εκπαίδευσης για 87 blobs

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

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

mftraining fontfile_1.tr fontfile_2.tr ...

το αποτέλεσμα πρέπει να είναι 2 αρχεία: inttemp (πρωτότυπα φόρμας) και pffmtable , τότε

cntraining fontfile_1.tr fontfile_2.tr ...

θα δημιουργήσει ένα αρχείο normproto (πρωτότυπα για εξομάλυνση χαρακτήρων;).

Το κάνω σε ένα από τα αρχεία μου. Κάτι βγήκε. Τώρα πρέπει να πούμε στο tesseract "το σύνολο των χαρακτήρων που μπορεί να εκτυπώσει. Χρησιμοποιήστε την εντολή unicharset_extractor για να δημιουργήσετε ένα αρχείο unicharset:

unicharset_extractor fontfile_1.box fontfile_2.box ...

Το κάνουμε. Στο αρχείο που προκύπτει, πρέπει να καθορίσετε τον τύπο του χαρακτήρα που χρησιμοποιεί μια μάσκα, η μάσκα έχει ως εξής: εάν το γράμμα είναι 1, εάν το μικρό γράμμα είναι 1, εάν το κεφαλαίο είναι 1, εάν ο αριθμός είναι -1, διαφορετικά 0

Για παράδειγμα,

β - μικρό γράμμα. Η μάσκα του είναι 0011 ή hex 3

? - ούτε γράμμα, ούτε αριθμό. Μάσκα = 0

Το 7 είναι απλά ένας αριθμός. Μάσκα 1000 ή εξάγωνο 8.

Το Β είναι κεφαλαίο γράμμα. Μάσκα 0101 ή δεκαεξαδική 5

όλα μου τα γράμματα είναι μικρά. Αλλάζω τη μάσκα τους σε 3.

Τώρα πρέπει να πάρουμε κάπου δύο λίστες, μία - με λέξεις που εμφανίζονται συχνά, τη δεύτερη - με τις υπόλοιπες λέξεις και να τις μετατρέψουμε σε μορφή DAWG χρησιμοποιώντας άλλο βοηθητικό πρόγραμμα:

wordlist2dawg Συχνές_Λέξεις_ λίστα freq-dawg

wordlist2dawg words_list word-dawg

Αρχικά, απλώς γέμισα 5 αυθαίρετες λέξεις σε κάθε μία.

Το τρίτο αρχείο, λέξεις χρήστη, είναι συνήθως κενό.

Το τελευταίο αρχείο που πρέπει να δημιουργηθεί ονομάζεται DangAmbigs. Περιγράφει περιπτώσεις λανθασμένης αντικατάστασης ενός αρχείου με άλλο, για παράδειγμα

το πρώτο ψηφίο είναι ο αριθμός των χαρακτήρων στην πρώτη ομάδα, το 2ο - ο αριθμός των χαρακτήρων στο 2ο.

Αυτή η γραμμή δείχνει ότι το 1I μπορεί μερικές φορές να αναγνωριστεί εσφαλμένα ως Sh.

Αυτό το αρχείο μπορεί επίσης να είναι. αδειάζω.

Τώρα τα βάζουμε όλα μαζί. Αρχεία

    freq-dawg

    word-dawg

    λέξεις χρήστη

    inttemp

    normproto

    pffmtable

    unicharset

    DangAmbigs

το προσθέτω με rus και το βάζω εκεί που είναι τα υπόλοιπα λεξικά, το έχω / usr / local / share / tessdata

Τα παντα!!!

Προσπαθούμε να αναγνωρίσουμε κάποιο αρχείο. Θα δοκιμάσω πρώτα το δικό μου για τα εσπεριδοειδή:

tesseract image.bmp έξοδος -l rus

Αυτό έκανα:

στο chiaakh (νότια) zhshl- (was) cshtrus, ναι! αλλά?

<(1ьалвьшвый>3456,78 $ τεμάχιο # 90

kapelvsshnm / pomshdor "12.5ε

Φυσικά, όχι υπέροχο, αλλά για πρώτη φορά, και τόσο πενιχρό δείγμα και λεξιλόγιο, νομίζω ότι δεν είναι κακό!

Vlasov Igor (igorvlassov at narod dot ru) - Tesseract στα ρωσικά

Το Tesseract-ocr είναι μια δωρεάν βιβλιοθήκη αναγνώρισης κειμένου. Για να το συνδέσετε, πρέπει να κατεβάσετε τα ακόλουθα στοιχεία:
Leptonica-http://code.google.com/p/leptonica/downloads/detail?name=leptonica-1.68-win32-lib-include-dirs.zip
Τελευταία tesseract-ocr (επί του παρόντος 3.02)-https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-3.02.02-win32-lib-include-dirs.zip&can= 2 & q =
Δεδομένα εκπαίδευσης ρωσικής γλώσσας-https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.rus.tar.gz
Μπορείτε να δημιουργήσετε τα πάντα μόνοι σας κατεβάζοντας τους πηγαίους κώδικες, αλλά δεν θα ασχοληθούμε με αυτό.

Έχοντας δημιουργήσει ένα νέο έργο, συμπεριλάβετε τις διαδρομές προς τα αρχεία lib και h. Και γράφουμε απλό κώδικα.
#περιλαμβάνω #περιλαμβάνω int main () (tesseract :: TessBaseAPI * myOCR = new tesseract :: TessBaseAPI (); printf ("Έκδοση Tesseract-ocr:% s \ n", myOCR-> Έκδοση ()); printf ("Έκδοση Leptonica:% s \ n ", getLeptonicaVersion ()); εάν (myOCR-> Init (NULL," rus ")) (fprintf (stderr," Δεν μπόρεσα να αρχικοποιήσω το tesseract. \ n "); έξοδο (1);) Pix * pix = pixRead ("test.tif"); myOCR-> SetImage (pix); char outText; lstrcpy (outText, myOCR-> GetUTF8Text ()); printf ("έξοδος OCR: \ n \ n"); printf (outText); myOCR -> Διαγραφή (); myOCR-> Τέλος (); pixDestroy (& pix); επιστροφή 0;)

Περιλαμβάνουμε αρχεία lib:
libtesseract302.lib
liblept168.lib

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

Ξεκινάμε το πρόγραμμα έτσι ώστε οι πληροφορίες να εξάγονται σε ένα αρχείο (αφού το UTF-8 θα είναι χαοτικό στην κονσόλα):
test> a.txt

Το περιεχόμενο του αρχείου είναι παρακάτω:
Έκδοση Tesseract-ocr: 3.02
Έκδοση Leptonica: leptonica-1.68 (14 Μαρτίου 2011, 10:47:28)
Έξοδος OCR:

Αντικαθιστώντας αυτήν την έκφραση στο (63), βλέπουμε ότι το
διαμορφωμένο σήμα μονής πλευρικής ζώνης
και το βάθος διαμόρφωσης είναι α.
7 Φάκελος XO) του κύριου σήματος
είναι αδύνατο να παρατηρηθεί στον παλμογράφο, αφού
Πώς αυτό το σήμα δεν είναι στενής ζώνης, αλλά σε αυτό
«Σε περίπτωση που δεν υπάρχει" καθαρότητα "του φακέλου, αλλά
με διαμόρφωση μονής πλευράς, στενής ζώνης
‘Σήμα απώλειας με τον ίδιο φάκελο, και εδώ είναι
«Και εκδηλώνεται ρητά και μερικές φορές (όπως στην περιγραφή
«Μεγάλη υπόθεση) μπερδεύει τα μυαλά των άπειρων
και άλλους ερευνητές ..
6.4 "FORMULA COSTASA"
r y
Με την έλευση της ΟΜ στα σχολικά βιβλία, περιοδικό `
Άρθρα και μονογραφίες συζήτησαν το ζήτημα του
το κέρδος που δίνει η μετάβαση από το πλάτος
διαμόρφωση σε μονή πλευρική ζώνη. Πολλά έχουν ειπωθεί
αντικρουόμενες απόψεις. Στις αρχές της δεκαετίας του '60, α-
Ο Ρικανός λόγιος J. Costas έγραψε ότι,
travailing εκτεταμένη βιβλιογραφία περιοδικών για OM, he
βρήκε σε κάθε άρθρο τη δική του εκτίμηση για την ενέργεια
"Το iical κέρδος σε σχέση με το AM-από δύο έως,
αρκετές δεκάδες. Ως αποτέλεσμα, βρήκε
-ότι είναι τα κέρδη που αναφέρονται σε κάθε άρθρο
βάζει περίπου (Z-K-Y!) dB, όπου M είναι ο αριθμός co- ‘g
Οι συντάκτες αυτού του άρθρου.
Yo, ‘11 Αν αυτό το αστείο είναι ανακριβές, είναι ακόμα σωστό
«Το σημείωμα αντικατοπτρίζει την ασυνέπεια που υπήρχε
? εκείνα τα χρόνια. Εκτός από το γεγονός ότι έχουν παράγει διαφορετικοί συγγραφείς
Ο D έκανε συγκρίσεις σε διαφορετικές συνθήκες και σε διαφορετικά μεγέθη
Προσδιόρισαν το ενεργειακό κέρδος, ήταν 1
«Έκανα πολλά διαφορετικά λάθη. 4 "
‚Ακολουθούν παραδείγματα κάποιου συλλογισμού. ",
1. Με το συμβατικό ΑΜ, υποθέτοντας την ισχύ του φορέα