13

PDFファイルからテキストを抽出しようとすると、いくつかの単語の間にランダムに空白が挿入されるようです。

このページのダウンロードセクションにある次のサンプルファイルでpdfbox-app-1.6.0.jar(最新バージョン)を使用しています:http: //www.sheffield.gov.uk/roads/children/parents/6-11/pedestrian -トレーニング

私は他のいくつかのPDFファイルで試しましたが、いくつかのページで同じことをしているようです。

私は次のことをします:

java -jar pdfbox-app-1.6.0.jar ExtractText -force -console〜/ Desktop / ped training pdf.pdf

ダウンロードしたファイルに、コンソールの結果に間違って挿入された次のスペースが表示されます。「•子供が安全に歩いて学校に行くことができれば、混雑を減らすことができます。」

「•後の人生のために良い習慣を身につけます。」

「www.sheffield.gov.uk」

「ThinkAhead!、これはに基づいています」

などなど。

ご覧のとおり、上記のいくつかの単語の間にスペースがありますが、理由はありません。

私はubuntuを使用しており、SunのJDK1.6を実行しています。

私はこれをいくつかの異なるPDFファイルで試し、フォーラムで解決策を探してみました。同様のバグがありましたが、すべて解決されたようです。

ヘルプがあれば、または他の誰かが同じ問題を抱えている場合はコメントしてください。これは、検索のためにコンテンツを適切に索引付けする際に大きな問題を引き起こしています。

4

2 に答える 2

13

残念ながら、現在、これに対する簡単な解決策はありません。

内部的にPDFドキュメントには、「文字'abc'を位置Xに配置」や「文字'def'を位置Yに配置」などの指示が含まれているだけで、PDFBoxは、抽出されたテキストが「abcdef」または「abcdef」ベースのどちらであるかを推論しようとします。 XとYの間の距離などです。これらのヒューリスティックは一般的にかなり正確ですが、ご覧のとおり、常に正しい結果が得られるとは限りません。

抽出されたテキストの品質を向上させる1つの方法は、抽出された各単語またはトークンで辞書検索を試すことです。ルックアップが失敗した場合は、トークンを次のトークンと組み合わせてみてください。結合されたトークンの辞書検索が成功した場合、テキストエクストラクタが誤って単語内に余分なスペースを追加した可能性があります。残念ながら、そのような機能はPDFBoxにはまだ存在していません。このために提出された機能リクエストについては、https://issues.apache.org/jira/browse/PDFBOX-1153を参照してください。パッチは大歓迎です!

于 2011-10-31T16:58:19.933 に答える
5

クラスorg.apache.pdfbox.util.PDFTextStripperpdfbox-1.7.1)を使用すると、傾向を変更して、2つの文字列が同じ単語の一部であるかどうかを判断できます。

増やすspacingToleranceと、挿入されるスペースの数が減ります。

/**
 * Set the space width-based tolerance value that is used
 * to estimate where spaces in text should be added.  Note that the
 * default value for this has been determined from trial and error.
 * Setting this value larger will reduce the number of spaces added. 
 * 
 * @param spacingToleranceValue tolerance / scaling factor to use
 */
public void setSpacingTolerance(float spacingToleranceValue) {
    this.spacingTolerance = spacingToleranceValue;
}
于 2013-01-31T08:29:48.710 に答える