0

Adobe Distiller ツールで作成された PDF ファイルからテキストを読み取るには?

私は現在 ABCPdf ツールを使用しており、pdf コンテンツを読み取るためのコード サンプルがありますが、Adobe PDF ライブラリによって作成された pdf からのテキストしか読み取ることができません。

   public string ExtractTextsFromAllPages(string pdfFileName)
        {
            var sb = new StringBuilder();

            using (var doc = new Doc())
            {
                doc.Read(pdfFileName);

                for (var currentPageNumber = 1; currentPageNumber <= doc.PageCount; currentPageNumber++)
                {
                    doc.PageNumber = currentPageNumber;
                    sb.Append(doc.GetText("Text"));
                }
            }

            return sb.ToString();
        }

Adobe Distiller によって作成された他の PDF ファイルがあり、上記のコードが機能しません。つまり、エンコードされているように見える以下の奇妙なデータを返します。

\0\a\b\0\t\n\0\r\n\0\a\b\t\n\n\b\v\f\0\t\r\f\b\0\r\0\r\n\v\b\v\f\f\n\r\0\r\0\0\0\b\r\n\0\a\r\0\0\b\r\b\b\t\n\r\0\b\r\n\t\b\v\n\b\v\v\0\a\b\r\n\r\n\v\r\0\b\b\b\v\r\0\r\n\v\f\r\f\f\r\n !\"\"\v#\t $ %&$% $'\v\"% \0( )% ! !\"\"'*$'\r\n\t $ %&$% $'\v\"% \0( \r\n\f\f\f\f\b\f\f\f\f\a \b\b\f\f\f!\"\r\n\f\a#$\f\f\f\b\f\f\a%\a \b\b\f\a\a&\a\a' \b\a\b\r\n(\f)\f)

Adobe Distiller ツールで作成された PDF ファイルからテキストを読み取るには?

他のPDFと同じように、ブラウザを使用してそのようなPDFファイルを簡単に開くことができると言われています。

ありがとう、

4

4 に答える 4

0

最初に、Adobe Reader またはその他の PDF ビューアーを使用して、PDF からテキストをコピーして貼り付けます。

テキストをまったくコピー アンド ペーストできない場合は、ファイルの権限によってテキスト抽出機能が無効になっている可能性があります。通常、権限は PDF ライブラリによって無視され、テキスト抽出には影響しません。

ファイルからテキストをコピーして貼り付けることができても、文字化けしていたり​​間違っているように見える場合は、テキスト抽出を適切に実行するために必要な情報が PDF に含まれていません。そのようなファイルは正しく表示されます。

Adobe Distiller は、できるだけ小さいファイルを生成するように構成されている場合、適切なテキスト抽出に必要な情報を含まないファイルを生成します。

編集:

ガベージ文字と意味のあるテキストを区別する必要がある場合は、テキストの読みやすさを測定するアルゴリズムを実装する必要があります。

そのためのいくつかのリンク:

于 2012-06-13T10:51:55.207 に答える
0

PDFの操作で同様の問題が発生しました。私は ABCPdf を使用したことがありませんが、iTextSharp を確認することをお勧めします。以前にそれを使用して PDF ファイルから文字列を抽出するツールを作成しましたが、フォントが埋め込まれている場合は引き続き問題が発生します。iTextSharp に切り替えることができる場合は、トピックに関する SO に関する質問があります。

VB.NET または C# で itextsharp dll を使用して PDF コンテンツを読み取る

于 2012-06-12T16:18:09.090 に答える
-1

ABCpdf は、有効なテキストを含むすべての PDF からテキストを抽出できます。スペースを推測し、ハイフンを解除し、関心のある領域にクリップし、取得したテキストが表示されるテキストと同じであることを確認するために必要なその他の多くのことを行います。

ただし、これはすべて、PDFが有効であること、つまりPDF仕様に準拠していること、および破損していないことを前提としています。

テキスト抽出の問題の最も一般的な原因は、Identity でエンコードされたフォントの破損です。ID エンコードされたフォントは、文字コードではなくグリフによって参照されます。フォントには、グリフ ID を文字に変換できるようにする ToUnicode マップが含まれています。

ただし、このエントリが削除された文書を時々見かけます。つまり、文字を識別する唯一の方法は、ドキュメントを OCR することです。

これは、Acrobat で文書を開いてテキストをコピーすると、自分で確認できます。コピーしたテキストをメモ帳などのアプリケーションに貼り付けると、間違っていることがわかります。ABCpdf は、Acrobat と同じように見えます。

これらの文書が徹底的かつ効果的に破壊されているという事実は、意図的なものかもしれません。これは確かに、誰もあなたのテキストをコピーできないようにするための良い方法です.

ABCpdf .NET テキスト抽出を作成したので、知っておく必要があります。:-)

于 2013-06-20T11:49:38.820 に答える