web-dev-qa-db-ja.com

Tesseractを使用してドキュメントをセグメント化し、結果のバウンディングボックスとラベルを出力する方法

Tesseractに、ページセグメンテーション(OCR以前)の結果としてラベル付けされたバウンディングボックスを含むファイルを出力させようとしています。 ICDAR競技で出場者が分割しなければならない結果とさまざまな文書( 学術論文はこちら )で示された結果のため、この「箱から出して」行うことができるはずです。以下は、私が作成したいものを示すその論文の例です。 Image of segmented and labelled output

Brew _brew install tesseract --HEAD_を使用してtesseractの最新バージョンを構築し、_/usr/local/Cellar/tesseract/HEAD/share/tessdata/configs/_にある設定ファイルを編集してラベル付きボックスを出力しようとしています。 hocrを設定として使用して受信した出力、つまり.

_tesseract infile.tiff outfile_stem -l eng -psm 1 hocr
_

すべてのバウンディングボックスを提供し、classタグにいくつかのラベルを付けます。

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

しかし、これを視覚化することはできません。 hOCRファイルを視覚化する標準ツールはありますか、それともTesseractに組み込まれた境界ボックスを使用して出力ファイルを作成する機能はありますか?

現在のヘッドバージョンの詳細:

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

編集

コマンドラインツールを使用してこれを達成することを本当に探しています(上記の例のように)。 @nguyenqは APIリファレンス を教えてくれましたが、残念ながらc ++の経験はありません。唯一の解決策がAPIを使用することである場合、簡単なpythonの例を教えてください。

30
James Owers

成功。 パターン認識および画像解析研究所(PRImA) の人々に感謝します。これを処理するツールを作成してくれました。それらは website または github で自由に入手できます。

10.10を実行し、 homebrew パッケージマネージャーを使用するMacの完全なソリューションを以下に示します。 wine を使用して、Windows実行可能ファイルを実行します。

概要

  1. ダウンロードツール: Tesseract OCR to Page (TPT)および Page Viewer (PVT)
  2. TPTを使用してドキュメントでtesseractを実行し、HOCR xmlをPAGE xmlに変換します
  3. PVTを使用して、PAGE xml情報がオーバーレイされた元の画像を表示します

コード

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"

結果

オーバーレイを含むドキュメント(ロールオーバーしてテキストとタイプを表示) Doc with overlays オーバーレイのみ(GUIボタンを使用して切り替え) Overlays alone

付録

自分でtesseractを実行し、別のツールを使用してその出力をPAGE形式に変換できます。私はこれを機能させることができませんでしたが、あなたは大丈夫だと確信しています!

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

この時点で PAGE Con​​verter Java Tool を使用してHOCR xmlをPAGE xmlに変換する必要があります。次のようになります。

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

残念ながら、nullポインターを取得し続けました。

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

そのAPIを使用して、さまざまなレベル(文字/単語/行/パラ)で境界ボックスを取得できます- API Example を参照してください。自分でラベルを描く必要があります。

3
nguyenq

ショートカット

PageViewerツールでHOCRファイルを直接開くこともできます。ただし、ファイル拡張子は.xmlにする必要があります。

Tesseract 4.0.0では、tesseract source/dir/myimage.tiff target/directory/basefilename hocrのようなコマンドは、OCRされたテキストのブロック、段落、行、およびワードレベルの境界ボックスを持つbasefilename.hocrファイルを作成します。 hocr configを使用しないコマンドでも、ブロックレベルのテキスト間に改行を含むテキストファイルが作成されますが、hocr形式はより明確です。

その他の設定オプション: https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs

1
RHH

個々の文字レベルのHOCRファイルを作成する最も簡単な方法は、Tesseract 3.05のnickjwhiteのフォークを使用することです。 https://github.com/nickjwhite/tesseract/tree/hocrcharboxes

TesseractのWikiに従ってtessdataファイルをコンパイルおよびダウンロードします。インストールを確認したら、次を使用します。

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

タダム!

0
macrico