このページには自動翻訳されたテキストを含めることができます。
C# および VB.NET で PDF からテキストを抽出する
PDF ドキュメントからテキストを抽出することは、C# および VB.NET 開発者にとって一般的なタスクです。 Docotic.Pdf ライブラリ を使用すると、Windows、Linux、macOS、Android、iOS、または クラウド環境で、わずか数行のコードでテキストを抽出できます。
9.5.17615-dev 14,813人が合格 NuGet の合計ダウンロード数 4,924,084サンプルコードを試すには Docotic.Pdf ライブラリが必要です。 C# .NET 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() は、サンプル ドキュメン ト に対して次の結果を提供します:
あるいは、個々のページからテキストを抽出することもできます:
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[i].GetTextWithFormatting()
Console.WriteLine(formattedText);
}
PdfDocument.GetTextWithFormatting() は、サンプル ドキュメント に対して次の結果を提供します:
特定の領域からプレーンテキストまたはフォーマットされたテキストを抽出します
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);
}
このサンプルは、サンプル ドキュメント に対して次の結果を提供します:
詳細なテキスト情報を抽出する
包括的な分析のために、すべてのテキスト チャンクに関する詳細情報を取得することもできます。 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");
}
このサンプルでは、サンプル ドキュメント に対して次の結果が提供されます:
次の Docotic.Pdf メソッドを使用して、詳細なテキスト情報を取得できます:
- PdfCanvas.GetTextData() (例えば page.Canvas.GetTextData())
- PdfPage.GetWords()
- PdfPage.GetChars()
- PdfPage.GetObjects() (テキストだけでなく画像やベクターパスも返します)
関連する 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
のマークを付けます。 コレクションを使用するには、カスタム
DirectoryFontLoader で PdfDocument
を初期化します:
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 のサンプルを見てください: