Skip to content

Tool based on Tesseract for parallelizing OCR, adding exifs in files efficiently and process big dataset

License

Notifications You must be signed in to change notification settings

labinnovationdocapost/ocrAutomator

Repository files navigation

OCR Automator

codecov

Le projet a été testé sur Visual Studio (Windows) et GCC (linux/Ubuntu 16.04)

Installation

  • Utiliser CMake (https://cmake.org/) pour générer le projet en fonction de votre environnement et IDE

Dépendances:

  • MuPDF 1.12
  • JpegTurbo 1.4.0
  • RapidJson
  • A2IA (Windows uniquement)
  • Exiv2 0.25
  • Zlib 1.2.11
  • RTTR 0.9.5
  • Archive 3.3.2
  • Tesseract 4.00.00
  • Leptonica 1.74

COnfigure and compile an ELF (Linux)

Configuration pour créer un .deb et le deployer (Linux)

  • Copier le fichier Env/env-example.config vers Env/env.config et renseigner les informations de connexion
  • Compiler le projet
  • Executer le script CreatePackage.sh
  • Executer le script Deploy.sh

Configuration pour compiler un .EXE (Windows)

  • Installer les outils nécéssaires et ajouter les à votre PATH
    • cmake (https://cmake.org/)
    • VCPKG (ou un autre Package Manager)
    • Visual studio 2017 ou ultérieur
  • Tesseract
    • Suivez la procédure de génération du projet
    • Lancer cmake
      • Spécifier votre toolchain si besoin: Specify toolchain file for cross-compiling pour la liaison des dépendances si vous en avez une (avec VCPKG par exemple)
        • Entrer le chemin vers le code source de tesseract et le chemin de sortie de la génération
        • Bouton Configure
        • Si Leptonica a bien été installé, la propriété Leptonica_DIR est préremplie
        • Vous pouvez décocher la propriété BUILD_TRAINING_TOOLS
        • Bouton Generate
    • ouvrez le projet avec Visual Studio et compilez le.
    • installez le (INSTALL), un dossier c:\programmes\tesseract doit être créer
    • si le chemin vers la lib tesseract contient un espace (ex: c:\programme files\tesseract)
      • modifier le fichier cmake/TesseractConfig.cmake
      • Ligne 37 ajouter un backslash \ devant chaque espace du chemin
      • Exemple : C:/Program Files/tesseract/include;C:/Program Files/tesseract/include/tesseract vers C:/Program\ Files/tesseract/include;C:/Program\ Files/tesseract/include/tesseract
    • Créer un dossier c:\programmes\tesseract\tessdata
    • Télécharger dans ce dossier vos packs de langues (https://github.com/tesseract-ocr/tesseract/wiki/Data-Files)

Utilisation

./OcrAutomator --help
./OcrAutomator [options...] /folder/of/images
./OcrAutomator [options...] --input /folder/of/images [options...]

Options:
  -v [ --version ]      Affiche le numéro de version de l'application
  -h [ --help ]         Affiche l'aide


Communes:
  -p [ --parallel ] NUM (=2) Nombre de threads en parallèle
  -s [ --silent ]            Ne pas afficher l'interface
  --port PORT (=12000)       Utiliser le port reseau définit pour toute
                             communication


Master:
  --psm NUM (=3)                        Page Segmentation Mode
  --oem NUM (=3)                        Ocr Engine Mode
  -l [ --lang ] LANG (=fra)             Langue utilisée pour l'OCR
  -o [ --output ] DOSSIER (=/mnt/f/Docs/Visual Studio 2017/Projects/LinuxTesseract/TesseractAutomator/bin/x64/Release)
                                        Dossier de sortie (defaut: dossier
                                        actuel)
  -c [ --continue ]                     le fichier (ou la page pour le PDF)
                                        n'est pas traité si le fichier texte
                                        et/ou l'exif existe deja
  -e [ --exif ] DOSSIER                 Copier l'image dans le fichier de
                                        sortie et écrire le resulat dans les
                                        Exif. Si non spécifié le paramtre
                                        --output est utilisé
  -t [ --text ] DOSSIER                 Ecrire le resultat dans un fichier
                                        texte (.txt) dans le dossier de sortie.
                                        Si non spécifié le paramètre --output
                                        est utilisé
  -f [ --prefixe ] [=SEPARATOR(=__)] (=__)
                                        Ajout le chemin relatif a [input] en
                                        prefixe du fichier.Defaut: __
  -i [ --input ] DOSSIER                Dossier d'entrée à partir duquel
                                        sont listés les fichiers à traiter


Slave:
  -a [ --slave ]        Le programme agira comme un noeud de calcul et
                        cherchera à se connecter à un noeud maitre disponible
                        pour récupérer des images à traiter


Information sur --exif et --text
Si aucun dossier n'est specifié, le dossier utilisé sera celui défini par --output.
Si --output n'est pas défini, le dossier de sortie sera le dossier courant.

Exemple:
./OcrAutomator --input /folder/of/images -et --output /output/folder
./OcrAutomator --input /folder/of/images -e --text /text/output/folder --output /output/folder
./OcrAutomator --input /folder/of/images --exif /image/output/folder --text /text/output/folder


Page segmentation modes:
  0    Orientation and script detection (OSD) only.
  1    Automatic page segmentation with OSD.
  2    Automatic page segmentation, but no OSD, or OCR.
  3    Fully automatic page segmentation, but no OSD. (Default)
  4    Assume a single column of text of variable sizes.
  5    Assume a single uniform block of vertically aligned text.
  6    Assume a single uniform block of text.
  7    Treat the image as a single text line.
  8    Treat the image as a single word.
  9    Treat the image as a single word in a circle.
 10    Treat the image as a single character.
 11    Sparse text. Find as much text as possible in no particular order.
 12    Sparse text with OSD.
 13    Raw line. Treat the image as a single text line,
                        bypassing hacks that are Tesseract-specific.
OCR Engine modes:
  0    Original Tesseract only.
  1    Neural nets LSTM only.
  2    Tesseract + LSTM.
  3    Default, based on what is available.

Pour plus d'infos :

  • OcrAutomator --help