このページには自動翻訳されたテキストを含めることができます。

PDF から C# と VB.NET でテキストを抽出する

PDF ドキュメントからテキストを抽出することは、C# と VB.NET の開発者にとって一般的な作業です。Docotic.Pdf ライブラリ を使用すると、Windows、Linux、macOS、Android、iOS、またはクラウド環境で、わずか数行のコードでテキストを抽出できます。

サンプルコードを試すには Docotic.Pdf ライブラリが必要です。C# .NET PDF ライブラリをダウンロード ページでライブラリと期間限定の無料ライセンス キーを入手してください。

テキスト抽出にはさまざまなアプローチがあります。いくつかの実用例を見てみましょう。

PDF からテキストを抽出する

PDF をプレーン テキストに変換する

プレーン テキストは、PDF コンテンツのインデックス作成、読み取り、または分析に使用できます。このサンプルでは、C# で PDF をテキストに変換する方法を示します。

using BitMiracle.Docotic.Pdf;

using var pdf = new PdfDocument("your_document.pdf");
string documentText = pdf.GetText();
Console.WriteLine(documentText);

PdfDocument.GetText() は、サンプル ドキュメント に対して次の結果を返します。

C# .NET でのプレーン テキスト抽出の結果

また、個々のページからテキストを抽出することもできます。

using var pdf = new PdfDocument("your_document.pdf");
for (int i = 0; i < pdf.PageCount; ++i)
{
    string pageText = pdf.Pages[i].GetText();
    using var writer = new StreamWriter($"page_{i}.txt");
    writer.Write(pageText);
}

関連する C# と VB.NET のサンプルは GitHub で 入手できます。

PDF を整形済みテキストに変換する

整形済みテキストは、構造化されたテキスト データを解析したり、人間が読みやすい形式でテキストを表示したりする場合に使用できます。このサンプルでは、C# で PDF を整形済みテキストに変換する方法を示します。

using var pdf = new PdfDocument("your_document.pdf");
string formattedText = pdf.GetTextWithFormatting();

// ページごとの代替アプローチ
_ = pdf.Pages[0].GetTextWithFormatting();

Console.WriteLine(formattedText);

PdfDocument.GetTextWithFormatting() は、サンプル ドキュメント に対して次の結果を返します。
C# .NET での整形済みテキスト抽出の結果

特定の領域からプレーンまたは整形済みテキストを抽出する

PDF ページの特定の部分だけからテキストを抽出する必要がある場合があります。たとえば、ページ ヘッダー内のテキストだけを解析する場合です。ライブラリはこれもサポートしています。C# のサンプル:

using var pdf = new PdfDocument("your_document.pdf");
var page = pdf.Pages[0];
var options = new PdfTextExtractionOptions
{
    Rectangle = new PdfRectangle(0, 0, page.Width, 100),
    WithFormatting = false
};
string areaText = page.GetText(options);
Console.WriteLine(areaText);

このサンプルでは、サンプル ドキュメント に対して次の結果を返します。 C# .NET での特定領域からのテキスト抽出の結果

詳細なテキスト情報を抽出する

包括的な分析のために、各テキスト チャンクの詳細情報を取得することもできます。Docotic.Pdf には、テキストをそのまま、単語単位、または文字単位で抽出するメソッドがあります。各テキスト チャンクについて、ライブラリは次を抽出します。

  • Unicode テキスト
  • ページ上の境界
  • フォント
  • フォント サイズ
  • 変換行列。拡大・回転されたテキストに有用です
  • 描画モード
  • 塗りつぶし色、透明度、パターン
  • 輪郭スタイル
  • 各文字の詳細情報

このサンプルでは、C# で PDF ページから単語単位でテキストを抽出する方法を示します。

using var pdf = new PdfDocument("your_document.pdf");
PdfPage page = pdf.Pages[0];
foreach (PdfTextData data in page.GetWords())
{
    Console.WriteLine(
        $"{{\n" +
        $"  text: '{data.GetText()}',\n" +
        $"  bounds: {data.Bounds},\n" +
        $"  font name: '{data.Font.Name}',\n" +
        $"  font size: {data.FontSize},\n" +
        $"  transformation matrix: {data.TransformationMatrix},\n" +
        $"  rendering mode: '{data.RenderingMode}',\n" +
        $"  brush: {data.Brush},\n" +
        $"  pen: {data.Pen}\n" +
        $"}},"
    );

    page.Canvas.DrawRectangle(data.Bounds);
}

pdf.Save("result.pdf");

このサンプルでは、サンプル ドキュメント に対して次の結果を返します。 C# .NET での詳細なテキスト抽出の結果

詳細なテキスト情報を取得するには、次の Docotic.Pdf メソッドを使用できます。

関連する GitHub サンプル:

Docotic.Pdf は、アラビア語、ヘブライ語、ペルシア語のテキストを PDF ドキュメントから正しく抽出します。

内部的には、PDF ドキュメントは視覚順に従ってテキストを格納します。つまり、右から左へのスクリプトを持つ言語のテキストは反転して格納されます。Docotic.Pdf は、抽出したテキストを論理順に従って並べ替えます。これは、右から左へのテキストの読者が通常期待する動作です。

特別なことをする必要はありません。上記のコード スニペットを使うだけで、RTL テキストを正しい順序で取得できます。

OCR(テキスト認識)

扱う PDF にテキストを含む画像がある場合は、光学式文字認識 を使用してテキストを抽出できます。次のサンプルでは、Docotic.Pdf と Tesseract を使ってその方法を示します。

クラウド環境でのフォント読み込み

上記のサンプルは、Windows、Linux、macOS のいずれの環境でも問題なく動作します。AWS Lambda のようなクラウド プラットフォームでは、追加で 1 つの設定手順が必要になる場合があります。

埋め込みフォントを使用しない PDF ドキュメントがあります。既定では、Docotic.Pdf はそのようなフォントをシステム フォント コレクション(たとえば C:/Windows/Fonts/usr/share/fonts)から読み込みます。ただし、クラウド プラットフォームでは、これらのフォント コレクションへのアクセスが制限される場合があります。

アプリケーションと一緒に、一般的なフォントの独自コレクションを配置できます。公開フォント ファイルを見つけてプロジェクトにコピーしてください。.NET プロジェクトで、すべてのフォント ファイルを CopyToOutputDirectory = Always に設定します。コレクションを使用するには、カスタムの DirectoryFontLoaderPdfDocument を初期化します。

PdfConfigurationOptions config = PdfConfigurationOptions.Create();
config.FontLoader = new DirectoryFontLoader(["path_to_your_font_collection"], true);

using var pdf = new PdfDocument("your_document.pdf", config);
// ...

結論

Docotic.Pdf ライブラリ を使用すると、C# と VB.NET で PDF からプレーン テキストまたは整形済みテキストを抽出できます。各テキスト チャンクの詳細情報も抽出できます。Docotic.Pdf は ここ からダウンロードできます。

PDF からテキストを抽出する C# と VB.NET のサンプルを参照してください。