2017-06-30 12 views
2

質問とthis質問については、PDFの何千ものダウンロード方法を聞いて、OCRでテキストを抽出する方法を尋ねると、私は強化のために再びレンガの壁を打っていますテキスト出力テセラクトOCR

PDFのテキストを抽出して、テキストの姓を検索することに興味があります(必ずしもテキストの残りの部分を読む必要はありません)。 PDFは、1810年から1832年の間に発行され、German Frakturで書かれた古い新聞記事を表しています。このフォントは、特にtesseractの場合は難しいようです。

Q:tesseractの画像品質をさらに向上させるには、少なくともテキスト内の姓を変更する必要がありますか?どの手順をお勧めしますか?

我々は一例としてthis PDFを取る場合

convert -colorspace GRAY -resize 3000x -units PixelsPerInch example.pdf example-page.jpg 

enter image description here

を適用する際に、私は今、それはひどい実行することになり

tesseract --tessdata-dir /usr/local/share/tessdata/ -l deu_frak example-page.jpg example-page.txt 

tesseractを使用している場合は、私は以下の画像を受け取ります約360個の発音区別記号が検出された画像にのみ表示されます。私のテキスト出力は完全にスクランブルされています。

私は

textcleaner -g -e stretch -f 25 -o 10 -u -s 1 -T -p 10 

または

textcleaner -g -e stretch -f 25 -o 20 -t 30 -u -s 1 -T -p 20 

のいずれかを適用し、フレッドのImageMagickのスクリプトtextcleanerを使用する場合、私は、その後に再びtesseractを実行すると、私はこの

enter image description here

のような何かを得ます上記のmentio結果のテキストははるかに優れています(約700-800の発音区別符が検出されました)が、テキストのほとんどの姓を見つけられないほど十分にスクランブルされています。

しかし、この例のページは特に難しいことが分かりますが、インクプリントではなく、最初から歪んでいないページも、tesseractと上記のコマンドで処理すると、スクランブルされた出力と判読不能な姓が生成されます。例えば

このページ

enter image description here

Q: - 少なくとも - どのように私は、さらににtesseractの画質を向上させることができ、テキストでの姓を見つけるために変更がありますか?どの手順をお勧めしますか?

編集: GUIボックスエディタはMacOSで確実に動作するようだと、私はjTessBoxEditor、例えば参照、訓練たTesseractが必要かどうか、知っているか与えられたドイツのフラクトゥールフォントに対処することをお勧めしませんが、 Qt-box-editor、またはTesseract-Box-Editor、またtesseractの訓練方法を理解できませんでした。tesseract training wiki hereと別のチュートリアルhereを参照してください。

答えて

1

私の父親は古い紙切れで同様の問題を抱えていましたが、GhostScriptで前処理してからTesseractを適用することで中程度の成功を収めました。あなたのマイレージは異なる場合があります。応答お使いのMacにGhostscriptをインストールし、

最初にコメントする:私のコマンド(Windowsの場合)

set nm=%1 
set d=%2 
"C:\Program Files\gs\gs9.21\bin\gswin32.exe" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pgmraw -r150 -dTextAlphaBits=4 -sOutputFile="%nm%-%%00d.pgm" %nm%.pdf 
echo. 2>"%nm%.txt" 

for %%f in (%nm%*.pgm) do (
    echo %%~nf 
    "C:\Program Files\Tesseract-OCR\tesseract.exe" "%%~nf.pgm" "%%~nf" 
    cat "%%~nf.txt" >> "%nm%.txt" 
    del "%%~nf.pgm" 
    del "%%~nf.txt" 
) 
"C:\Program Files\Microsoft Office\Office11\winword.exe" "%nm%.txt" 

EDITました。その後

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pgmraw -r150 -dTextAlphaBits=4 -sOutputFile='paper-%00d.pgm' paper.pdf 

これは、ラスタライズされたファイル紙-01.pgm、紙02.pgmなどを(このケースでは、あなたのPDFファイルに複数のページを持っている)を作成しますかhttps://wiki.scribus.net/canvas/Installation_and_Configuration_of_Ghostscript#Installing_Ghostscript_on_Mac_OS_X

を参照してください。 「ペーパー」を元のpdfのベースネームに置き換えることができます。あなたはまた、解像度を混乱させることができます。それ以外のものはhttps://ghostscript.com/doc/9.19/Use.htmにあります。

各pgmファイルでtesseractを使用してください。

+0

こんにちは、マイク、投稿していただきありがとうございます。私はあなたのスクリプトを試してみましたが、それを "翻訳"してMacで動作させることに失敗しました。どのようにそれがMac用に動作するように任意の提案? –

+1

上記の私の編集を参照してください。 – mikep

+0

あなたの素早い返答をありがとう。私が最後に持っている問題は、膨大な量のPDFがあるので、gsとGNU並列を使いたいということです。私はこのコマンドを試しました。 'time parallel -j 8 --verbose --progress 'mkdir -p {。} && gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE = pgmraw -r300 -dTextAlphaBits = 4 -sProcessColorModel = DeviceGray -sColorConversionStrategy = Gray - dOverrideICC -o {。}/{。} .pgm '::: * .pdf'を実行すると、それぞれのPDFの後に名前が付けられたフォルダが空になります(それぞれのPDFのpgmが存在するはずです)。私が間違っていることを偶然知っていますか? –