web-dev-qa-db-ja.com

tesseractでドキュメント構造を保持する方法

Tesseractocrを使用して画像からテキストを抽出しています。ドキュメントの構造を維持することは私にとって非常に重要です。現在、正八胞体は構造を保持していません。実際、テキストの順序を変更しています。私の入力は下の画像です。

input

私が得ている出力は次のとおりです。

Someto the left
Someto the left

Some in the middle
Some in the middle

Some with some tab
Some with some tab

Some with some space between them
Some with some space between them

Sometext here
Sometext here

this much
this much

画像内の同じ構造の目的の出力を取得するにはどうすればよいですか?

つまり、次のようになります。

                                                 Some text here
                                                 Some text here

Some to the left
Some to the left

                    Some in the middle
                    Some in the middle

        Some with some tab
        Some with some tab

Some with some space between them                       this much
Some with some space between them                       this much
19
Sar009

新しいバージョンのtesseract(3.04)には、preserve_interword_spacesというオプションがあり、これで必要な処理を実行できます。

Tesseractが単語間で検出するスペースの数は、類似した行間で常に同じであるとは限らないことに注意してください。したがって、(例のように)前にスペースが並んでいる単語は、この方法で出力されない場合があります。preserve_interword_spacesオプションは、特別なことを何もしようとせず、見つかったスペースの抽出を保持するだけです。 。デフォルトでは、正八胞体はスペースの実行を1つにまとめます。

このオプションの詳細は ここ です。

19
David

唯一の信頼できる方法は、hOCR出力を有効にして解析することです。元の画像と同様に、ページ上の各単語の位置がピクセル単位で含まれます。

これを行うには、Tesseractの構成ファイルまたは使用するAPIでtessedit_create_hocr 1を指定します。

hOCRはHTMLのサブセットであり、Tesseractが生成するものが常に有効なXMLであるとは限らないため、HTMLパーサーを使用することも、独自に作成することもできますが、XMLパーサーを確実に使用することはできません。

4
Karol S

Tesseractコードは、出力のスペースを圧縮します。それらを保持するには、コードを変更する必要があります。 Tesseract-スペースとタブのあいまいさ 投稿を参照してください。

3
nguyenq

連続したテキストの単一の列を保持したい複数列のドキュメント(たとえば、列1、次に列2を読む)または写真付きのドキュメント(たとえば、新聞記事)の場合、ページのセグメンテーション方法を調整することを検討する価値があります。 tesseractを使用したデフォルトのページセグメンテーション方法は、「自動ページセグメンテーション」のみを実行し、「方向とスクリプトの検出(OSD)」は実行しません。

psm設定を1にすると、tesseractは「OSDによる自動ページセグメンテーション」を使用するように指示されます。これにより、tesseractは(ページを単一のテキストブロックとして扱うのではなく)複数列のドキュメントを認識できるようになり、写真のような非テキストブロックをOCRしようとするのを回避できます。

ページのセグメンテーション方法の詳細については、以下を参照してください: https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality

これは、ページのセグメンテーション方法を調整するためのコマンドライン構文のサンプルです。

tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]

構文の詳細については、以下を参照してください: https://github.com/tesseract-ocr/tesseract/wiki

1
Omar Wasow

私の場合、--psm 6オプションの追加は機能します(コマンドライン)

0
tjysdsg