Est-il possible de limiter le jeu de caractères recherché par tesseract (par exemple, rechercher uniquement les lettres de a à z)? Cela améliorerait considérablement mes résultats.
Créez un fichier de configuration (par exemple "lettres") dans le répertoire tessdata/configs - généralement /usr/share/tesseract/tessdata/configs
ou/usr/share/tesseract-ocr/tessdata/configs
Et ajoutez cette ligne au fichier de configuration:
tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz
... ou peut-être que [a-z] fonctionne .. ne sais pas :-)
Appelez ensuite tesseract comme ceci:
tesseract input.tif output nobatch letters
Cela limitera tesseract à reconnaître uniquement les personnages recherchés
Pour utiliser la liste blanche dans un fichier de configuration ou en utilisant le commutateur de ligne de commande -c tessedit_char_whitelist=...
, Dans la dernière version 4.0, vous devrez définir le mode Moteur OCR sur "Original Tesseract uniquement". En effet, le nouveau mode "Neural nets LSTM" ne respecte pas le réglage de la liste blanche. Exemple de ligne de commande appropriée pour la version 4.0:
tesseract fichier_entrée fichier_sortie --oem 0 -c tessedit_char_whitelist = abc123
MISE À JOUR: Dans les versions plus récentes (4.0), il y a un fichier eng.traineddata
Corrompu installé par défaut par Windows et certains installateurs Linux. La solution temporaire consiste à remplacer le fichier tessdata\eng.traineddata
Par un fichier d'une ancienne version. Ce fichier doit faire environ 30 Mo. Sinon, vous obtiendrez Erreur: "Tesseract n'a pas pu charger de langues!" ou similaire.
En plus du fichier de configuration, est le -c
drapeau:
tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
Il suffit d'ajouter cela pour toute personne utilisant tesseract sur Android. Dans votre fonction readOCR où vous définissez la langue, etc., ajoutez la ligne suivante;
tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
vous pouvez également faire blackList pour les caractères à exclure.
Dans Tesseract version 4.00, cela ne peut pas être fait. Vous pouvez uniquement affiner votre modèle ou utiliser l'expression régulière pour supprimer des caractères supplémentaires de la prédiction.