6

PDFからのテキストの抽出はすでに行っていますが、画像を抽出したいと思います。最初の問題は、画像が1ページあたりのテキストの間にあることです。私が知りたいのは、ファイルがページごとに2列であっても、画像を順番に抽出する方法と、画像がテキストのどこに配置されているかを判断する方法です。

これが私が試したいくつかのコードです。

画像抽出:

ExtractImages.java:
public static final String RESULT = "results/part4/chapter15/Img%s.%s";
public void extractImages(String filename)
    throws IOException, DocumentException {
    PdfReader reader = new PdfReader(filename);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);
    MyImageRenderListener listener = new MyImageRenderListener(RESULT);
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        parser.processContent(i, listener);
    }
}

MyImageRenderListener:
public MyImageRenderListener(String path) {
    this.path = path;
}

public void renderImage(ImageRenderInfo renderInfo) {
    try {
        String filename;
        FileOutputStream os;
        PdfImageObject image = renderInfo.getImage();
        if (image == null) return;
        filename = String.format(path, renderInfo.getRef().getNumber(), image.getFileType());
        os = new FileOutputStream(filename);
        os.write(image.getImageAsBytes());
        os.flush();
        os.close();
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}

コードはPDFの内容を処理し、画像をチェックしてから、それらの画像を画像ファイル(.png、.jpgなど)にレンダリングします。

私がここで得た問題は、画像を順番に抽出しないことです。ページの最初に最初に表示され、最後にどの画像が表示されるかがわかるように、画像を順番に表示します。それ、どうやったら出来るの?それでは、ファイルにレンダリングせずに画像を抽出することは可能ですか?画像の私の目標は、ファイルに変換せずに、Androidアプリケーションで画像として表示することです。それが不可能な場合は、ユーザーが画像を使い終わったら、画像を削除することに固執します。

私の目的は、PDFファイルからテキストと画像を抽出(表示ではない)し、Androidアプリケーションで順番に表示することです。

4

1 に答える 1

1

高レベルのアプローチ:

  1. 読み順を気にせずに、ドキュメントからすべてのテキストを抽出する
  2. 文字、バイグラム、トリグラムの分布に基づいてテキストの言語を決定する
  3. 言語がわかれば、LTR (左から右) と RTL のどちらの読み順を使用するかがわかります。
  4. 各文字の境界ボックス、言語、フォントなどの情報を使用して、ヒューリスティックにテキスト行を作成します (最初の適切な測定基準は、「2 つの文字がほぼ同じ y 位置にあり、文字間のギャップが大きい場合に結合する」ことです)。 x 位置は平均 + std_dev 範囲内に収まります)
  5. 行を作成したら、段落を作成します (以前と同様のヒューリスティック)。
  6. 段落とテキストの言語が用意できたので、段落を正しい順序で印刷できます。

これは私が iText で研究してきたことであり、確かに簡単な作業ではありません。

もちろん、最も簡単な解決策は、タグ付きの pdf ドキュメントを用意することです。タグ付きドキュメントには、どのビジュアル要素がどのように一緒に属しているかに関する情報が含まれています。または、簡単に言えば、行や段落を作成することに気を配る必要はありません。

于 2017-07-27T14:58:53.507 に答える