Comment puis-je segmenter un document en utilisant Tesseract puis sortir les boîtes de délimitation et les étiquettes résultantes

J'essaie de faire en sorte que Tesseract produise un fichier avec des boîtes délimitées qui résultent de la segmentation de la page (pré OCR). Je sais qu'il doit être capable de faire cela "hors des sentiers battus" en raison des résultats présentés aux concours ICDAR où les participants devaient segmenter et divers documents (document académique ici). Voici un exemple de ce document illustrant ce que je veux créer: Image of segmented and labelled output

j'ai construit 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 la sortie des boîtes étiquetées. La sortie reçue en utilisant hocr comme la configuration, i.e.

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

donne une boîte de limite pour tout et a un certain étiquetage dans class par exemple, les balises

<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 ce. Existe-t-il un outil standard pour visualiser les fichiers hOCR, ou est-ce que la possibilité de créer un fichier de sortie avec des boîtes de limites intégrées dans Tesseract?

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

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 à atteindre cet objectif en utilisant l'outil en ligne de commande (comme dans les exemples ci-dessus). @nguyenq m'a montré le référence API, malheureusement je n'ai pas d'expérience c++. Si la seule solution est d'utiliser L'API, pouvez-vous fournir un exemple rapide de python?

27
demandé sur kungfujam 2015-02-18 21:27:19

5 réponses

Succès. Merci beaucoup pour le peuple à l' la Reconnaissance des formes et Analyse d'Image, Laboratoire de Recherche (PRImA) pour la production d'outils pour les gérer. Vous pouvez les obtenir gratuitement sur leur site web ou github.

ci-dessous je donne la solution complète pour un Mac fonctionnant 10.10 et en utilisant le homebrew gestionnaire de paquets. J'utilise vin exécuter windows les fichiers exécutables.

vue d'ensemble

  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 une page xml
  3. utilisez le PVT pour visualiser l'image originale avec l'information xml superposée

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 recouvrement (rollover to see texte et tapez) Doc with overlays Superposition seule (utilisez les boutons GUI pour basculer) Overlays alone

Annexe

vous pouvez lancer tesseract vous-même et utiliser un autre outil pour convertir sa sortie au format de PAGE. J'ai été incapable de faire marcher ça, mais je suis sûr que ça ira!

# 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"

a ce point vous devez utiliser le PAGE Convertisseur Java Outil pour convertir le xml HOCR en une page xml. Il faut aller un peu 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)
21
répondu kungfujam 2015-09-20 23:36:54

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

3
répondu nguyenq 2015-02-19 02:27:34

Raccourci

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

2
répondu PRImA Research Group 2015-02-23 09:42:00

avec Tesseract 4.0.0, une commande comme tesseract source/dir/myimage.tiff target/directory/basefilename hocr va créer un basefilename.hocr fichier avec des blocs-, des paragraphes-, des lignes-, et des mots-niveau délimitant des boîtes pour le texte OCR'ed. Même la commande sans le hocr config crée un fichier texte avec des lignes entre les blocs de texte, mais le format hocr est plus explicite.

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

1
répondu RHH 2017-12-09 19:35:04

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

compiler et télécharger des fichiers tessdata en suivant le wiki de Tesseract. Une fois l'installation vérifiée, utilisez :

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

et tadam !

0
répondu macrico 2017-07-31 10:08:15