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

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

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

サンプルコードを試すには Docotic.Pdf ライブラリが必要です。 Docotic.Pdf バイナ リ をダウンロードするか、その NuGet パッケージ を使用しま す。 評価モードの制限なしでライブラリを試すには、ここ で無料の期間限定 ライセンス キーを入手できます。

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

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 で PDF ドキュメントからプレーン テキストを抽出した結果

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

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 をフォーマットされたテキストに変換する

You may use formatted text to parse some structured text data or to display the text in a human-readable format. This sample shows how to convert PDF to formatted text in C#:

using (var pdf = new PdfDocument("your_document.pdf"))
{
    string formattedText = pdf.GetTextWithFormatting(); // または使用します pdf.Pages[i].GetTextWithFormatting()
    Console.WriteLine(formattedText);
}

PdfDocument.GetTextWithFormatting() は、サンプル ドキュメント に対して次の結果を提供します: C# .NET で PDF ドキュメントから書式設定されたテキストを抽出した結果

特定の領域からプレーンテキストまたはフォーマットされたテキストを抽出します

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 (PdfDocument 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 で PDF から詳細なテキストを抽出した結果

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

関連する GitHub サンプル:

右から左への双方向テキストを抽出する

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

PDF ドキュメントは内部的に、視覚的な順序に従ってテキストを保存します。 これは、右から左へ書く言語の テキストが逆に保存されることを意味します。 Docotic.Pdf は、抽出されたテキストを論理的な順序に従って 並べ替えます。 これは、右から左へのテキストの読者が通常期待するものです。

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

OCR(テキスト認識)

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

詳細については、.NET での OCR PDF の記事を参照してください。

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

上記のサンプルは、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(new[] { "path_to_your_font_collection" }, true);
using (PdfDocument pdf = new PdfDocument("your_document.pdf", config))
{
   ...
}

結論

Docotic.Pdf ライブラリ を使用すると、C# および VB.NET で PDF からプレーン テキス トまたは書式設定されたテキストを抽出できます。 すべてのテキスト チャンクに関する詳細情報を抽出する こともできます。 Docotic.Pdf は ここ からダウンロードできます。

PDF からテキストを抽出するための C# および VB.NET のサンプルを見てください: