web-dev-qa-db-fra.com

Comment segmenter un document à l'aide de Tesseract, puis sortir les boîtes de délimitation et les étiquettes résultantes

J'essaie d'obtenir Tesseract pour sortir un fichier avec des boîtes de délimitation étiquetées qui résultent de la segmentation de la page (pré OCR). Je sais qu'il doit être capable de le faire `` hors de la boîte '' en raison des résultats présentés lors des concours ICDAR où les candidats ont dû segmenter et divers documents ( article académique ici ). Voici un exemple de ce document illustrant ce que je veux créer: Image of segmented and labelled output

J'ai créé la dernière version de tesseract en utilisant brew, brew install tesseract --HEAD, et ont essayé de modifier les fichiers de configuration situés dans /usr/local/Cellar/tesseract/HEAD/share/tessdata/configs/ pour afficher les zones étiquetées. La sortie reçue en utilisant hocr comme configuration, c'est-à-dire.

tesseract infile.tiff outfile_stem -l eng -psm 1 hocr

donne une boîte englobante pour tout et a un certain étiquetage dans les balises class par exemple.

<p class='ocr_par' dir='ltr' id='par_5_82' title="bbox 2194 4490 3842 4589">
    <span class='ocr_line' id='line_5_142' ...

mais je ne peux pas visualiser cela. Existe-t-il un outil standard pour visualiser les fichiers hOCR ou la possibilité de créer un fichier de sortie avec des boîtes englobantes intégrées à Tesseract?

Détails de la version actuelle de la tête:

tesseract 3.04.00
 leptonica-1.71
  libjpeg 8d : libpng 1.6.16 : libtiff 4.0.3 : zlib 1.2.5

Modifier

Je cherche vraiment à y parvenir en utilisant l'outil de ligne de commande (comme dans les exemples ci-dessus). @nguyenq m'a indiqué le référence API , malheureusement je n'ai aucune expérience c ++. Si la seule solution consiste à utiliser l'API, pouvez-vous s'il vous plaît fournir un exemple rapide python?

30
James Owers

Succès. Un grand merci aux gens du Laboratoire de recherche sur la reconnaissance des formes et l'analyse d'images (PRImA) pour la production d'outils pour gérer cela. Vous pouvez les obtenir gratuitement sur leur site Web ou github .

Ci-dessous, je donne la solution complète pour un Mac exécutant 10.10 et utilisant le gestionnaire de paquets homebrew . J'utilise wine pour exécuter les exécutables Windows.

Présentation

  1. Outils de téléchargement: Tesseract OCR to Page (TPT) et Page Viewer (PVT)
  2. Utilisez le TPT pour exécuter tesseract sur votre document et convertir le xml HOCR en un xml PAGE
  3. Utilisez le PVT pour afficher l'image originale avec les informations PAGE xml superposées

Code

brew install wine  # takes a little while >10m
brew install gs    # only for generating a tif example. Not required, you can use Preview
brew install wget  # only for downloading example paper. Not required, you can do so manually!
cd ~/Downloads
wget -O paper.pdf "http://www.prima.cse.salford.ac.uk/www/assets/papers/ICDAR2013_Antonacopoulos_HNLA2013.pdf"
# This command can be ommitted and you can do the conversion to tiff with Preview
gs                          \
  -o paper-%d.tif           \
  -sDEVICE=tiff24nc         \
  -r300x300                 \
   paper.pdf 

cd ~/Downloads
# ttptool is the location you downloaded the Tesseract to PAGE tool to
ttptool="/Users/Me/Project/tools/TesseractToPAGE 1.3"
# Sudo chmod 777 "$ttptool/bin/PRImA_Tesseract-1-3-78.exe"
touch "$ttptool/log.txt"
wine "$ttptool/bin/PRImA_Tesseract-1-3-78.exe"   \
  -inp-img "$dl/Downloads/paper-3.tif"           \
  -out-xml "$dl/Downloads/paper-3-tool.xml"      \
  -rec-mode layout>>log.txt

# pvtool is the location you downloaded the PAGE Viewer tool to
pvtool="/Users/Me/Project/tools/PAGEViewerMacOS_1.1/JPageViewer 1.1 (Mac OS, 64 bit)"
cd "$pvtool"
dl=~
Java -XstartOnFirstThread -jar JPageViewer.jar "$dl/Downloads/paper-3-tool.xml" "$dl/Downloads/paper-3.tif"

Résultats

Document avec superpositions (survolez pour voir le texte et le type) Doc with overlays Superpositions seules (utilisez les boutons de l'interface graphique pour basculer) Overlays alone

Appendice

Vous pouvez exécuter tesseract vous-même et utiliser un autre outil pour convertir sa sortie au format PAGE. Je n'ai pas réussi à faire fonctionner cela, mais je suis sûr que tout ira bien!

# Note that the pvtool does take as input HOCR xml but it ignores the region type
brew install tesseract --devel  # installs v 3.03 at time of writing
tesseract ~/Downloads/paper-3.tif ~/Downloads/paper-3 hocr
mv paper-3.hocr paper-3.xml  # The page viewer will only open XML files
Java -XstartOnFirstThread -jar JPageViewer.jar "$dl/Downloads/paper-3.xml"

À ce stade, vous devez utiliser le PAGE Converter Java Tool pour convertir le xml HOCR en un xml PAGE. Il devrait aller quelque chose comme ceci:

pctool="/Users/Me/Project/tools/JPageConverter 1.0"
Java -jar "$pctool/PageConverter.jar" -source-xml paper-3.xml -target-xml paper-3-hocrconvert.xml -convert-to LATEST

Malheureusement, j'ai continué à recevoir des pointeurs nuls.

Could not convert to target XML schema format.
Java.lang.NullPointerException
    at org.primaresearch.dla.page.converter.PageConverter.run(PageConverter.Java:126)
    at org.primaresearch.dla.page.converter.PageConverter.main(PageConverter.Java:65)
Could not save target PAGE XML file: paper-3-hocrconvert.xml
Java.lang.NullPointerException
    at org.primaresearch.dla.page.io.xml.XmlInputOutput.writePage(XmlInputOutput.Java:144)
    at org.primaresearch.dla.page.converter.PageConverter.run(PageConverter.Java:135)
    at org.primaresearch.dla.page.converter.PageConverter.main(PageConverter.Java:65)
28
James Owers

Vous pouvez utiliser son API pour obtenir les boîtes englobantes à différents niveaux (caractère/mot/ligne/para) - voir Exemple d'API . Vous devez dessiner les étiquettes vous-même.

3
nguyenq

Raccourci

Il est également possible d'ouvrir des fichiers HOCR directement avec l'outil PageViewer. L'extension du fichier doit cependant être .xml.

2
PRImA Research Group

Avec Tesseract 4.0.0, une commande comme tesseract source/dir/myimage.tiff target/directory/basefilename hocr créera un basefilename.hocr fichier avec des zones de délimitation de niveau bloc, paragraphe, ligne et Word pour le texte OCR. Même la commande sans la configuration hocr crée un fichier texte avec des sauts de ligne entre le texte au niveau du bloc, mais le format hocr est plus explicite.

Plus d'options de configuration ici: https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs

1
RHH

La façon la plus simple d'avoir un fichier HOCR avec le niveau de caractère individuel est d'utiliser la fourchette de nickjwhite de Tesseract 3.05: https://github.com/nickjwhite/tesseract/tree/hocrcharboxes

Compilez et téléchargez les fichiers tessdata en suivant le wiki de Tesseract. Une fois la vérification de l'installation effectuée, utilisez:

tesseract {image file} -c tessedit_create_hocr=1 -c hocr_char_boxes=1 {output name}

et tadam!

0
macrico