C#でPDFファイルからデータを抽出する(初心者向けチュートリアル)

現代の職場では、PDFドキュメントから情報を効率的に取得することは、時間の節約と効率の向上に不可欠です。しかし、PDFの形式や内容は多岐にわたるため、正確なデータ抽出は困難な作業となっています。この記事では、開発者に ComPDFKit ライブラリを提示し、C# を使用して PDF からテキスト、表、画像を簡単に抽出できるようにすることで、この障害に対処しようとしています。

この記事では、C# で ComPDFKit を使用してデータを抽出する方法を詳しく説明します。まず、当社のWebサイトからSDKをダウンロードして簡単にアクセスできます。次に、Visual Studio で新しいプロジェクトを作成し、C# で PDF データ抽出用の ComPDFKit ライブラリを統合するには、次の手順に従います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789769/17adefbe-c29f-3a93-0d22-68300992762b.png)

## ステップ 1: Visual Studio で新しいプロジェクトを作成する

1. Visual Studioを開き、[ファイル]メニューに移動します。
2. 「新規」を選択し、「プロジェクト...」を選択します。
3. [Visual C#] -> [Windows デスクトップ] -> [コンソール アプリ (.NET Framework)] を選択します。

## ステップ 2: 新しいプロジェクトを構成する
1. プロジェクトの名前と場所を指定します。
2. プログラミング フレームワークとして ".NET Framework 4.6.1" が選択されていることを確認します。
3. [OK] ボタンをクリックして、コンソール アプリケーション プロジェクトを作成します。

## ステップ 3: ComPDFKit C#PDFライブラリをインストールする
1. 「lib」フォルダ内のすべてのファイルをComPDFKitパッケージからプロジェクトフォルダにコピーします。
2. ComPDFKit Conversion SDK 動的ライブラリを [参照] に追加します。
  - ソリューション エクスプローラーでプロジェクトを右クリックし、[追加] -> [参照] を選択します。
  - 「参照の追加」ダイアログで、「参照」タブに移動します。
  - プロジェクトフォルダに移動し、「ComPDFKit_Conversion.dll」を選択します。
  - 「OK」をクリックして参照を追加します。

3. 「x64」および「x86」フォルダをComPDFKitパッケージからプロジェクトに追加します。
- 「CPDFConverterNative.dll」および「opencv_world420.dll」の「出力ディレクトリにコピー」プロパティが「新しい場合はコピー」に設定されていることを確認します。

4. 「resource」フォルダをComPDFKitパッケージからプロジェクトフォルダにコピーします。
- 「resource」フォルダ内のすべてのファイルの「出力ディレクトリにコピー」プロパティを「新しい場合はコピー」に設定します。

## ステップ 4: ライセンスキーを適用する
PDF 抽出 API を使用する前に、営業チームから取得した有効なライセンスキーを使用して ComPDFKit ライブラリを初期化します。
```
string resPath = "***"; // Path to the resource folder
string libPath = "***"; // Path to the ComPDFKit library
string license = "***"; // Your license key
CPDFConverter.InitLibrary(libPath);
CPDFConverter.InitResource(resPath);
CPDFConverter.LicenseVerify(license);
```

プロジェクトが設定され、[ライセンスキー](https://www.compdf.com/faq/General/how-can-I-get-a-license-key)が適用されたので、C# アプリケーションで ComPDFKit を使用して PDF からデータを抽出する準備が整いました。

## C#でPDFからテキストを抽出する
PDFファイルを扱う場合、請求書から注文番号、日付、合計、その他のフィールドなどの重要なデータ要素を抽出することは、ファイルに含まれる情報に対する洞察を得るために重要です。大量のPDFドキュメントを手動で処理してこの情報を見つけるのは、時間とリソースを大量に消費する可能性があります。ただし、このプロセスは、テキスト抽出方法を使用して合理化および自動化できます。

### PDFドキュメント全体からすべてのテキストを抽出する:
```
string inputFilePath = "***"; // Path to the input PDF file
string outputFolderPath = "***"; // Path to the output folder
string outputFileName = "***"; // Name of the output file
// Create a converter instance for JSON text extraction
CPDFConverterJsonText converter = CPDFConvertFactroy.CreateConverter(CPDFConvertType.CPDFConvertTypeJsonText, inputFilePath) as CPDFConverterJsonText;
// Specify JSON conversion options
CPDFConvertJsonOptions jsonOptions = new CPDFConvertJsonOptions();
jsonOptions.IsAllowOCR = false; // Disable OCR during conversion
// Initialize error variable
ConvertError error = ConvertError.ERR_UNKNOWN;
// Convert the entire PDF document to JSON text
converter.Convert(outputFolderPath, ref outputFileName, jsonOptions, ref error);
```

### 特定のページからのテキストの抽出:
```
string inputFilePath = "***"; // Path to the input PDF file
string outputFolderPath = "***"; // Path to the output folder
string outputFileName = "***"; // Name of the output file
// Create a converter instance for JSON text extraction
CPDFConverterJsonText converter = CPDFConvertFactroy.CreateConverter(CPDFConvertType.CPDFConvertTypeJsonText, inputFilePath) as CPDFConverterJsonText;
// Specify JSON conversion options
CPDFConvertJsonOptions jsonOptions = new CPDFConvertJsonOptions();
jsonOptions.IsAllowOCR = false; // Disable OCR during conversion
// Get the total number of pages in the PDF document
int pageCount = converter.GetPagesCount();
// Create an array to specify the pages from which to extract text
int[] pageArray = new int[pageCount];
for (int i = 0; i < pageCount; i++)
{
  pageArray[i] = i + 1; // Pages are indexed starting from 1
}
// Initialize error variable
ConvertError error = ConvertError.ERR_UNKNOWN;
// Convert text from specific pages of the PDF document to JSON text
converter.Convert(outputFolderPath, ref outputFileName, jsonOptions, pageArray, ref error);
```

これらのコード例は、ComPDFKitがPDFファイルからのテキストデータの抽出を大幅に簡素化し、さまざまなデータ処理タスクの自動化と効率化を促進する方法を強調しています。ドキュメント全体からテキストを抽出する必要がある場合でも、特定のページからテキストを抽出する必要がある場合でも、ComPDFKitはワークフローを合理化し、PDFドキュメントから貴重な洞察を引き出すための包括的なソリューションを提供します。

ComPDFKitを利用することで、PDFドキュメントからテキストを簡単に抽出し、抽出したテキストをJSONファイルとして保存できます。さらに、IsAllowOCR オプションで指定されているように、変換プロセスをカスタマイズして OCR を無効にすることができます。この柔軟性により、テキスト抽出プロセスが特定の要件や好みに合わせられるようになり、データ処理タスクの全体的な効率と精度が向上します。

### C#でPDFから表を抽出する
PDFファイルからの表抽出により、データの可読性とプログラマビリティが向上し、合理化されたビジネスプロセスとワークフローの自動化が容易になります。PDFを構造化されたJSONデータに変換することで、さまざまなエンタープライズアプリケーションやシステムにシームレスに統合できます。

以下は、PDFファイルからテーブルを抽出するプロセスを示すコード例です。

```
string inputFilePath = "***"; // Path to the input PDF file
string outputFolderPath = "***"; // Path to the output folder
string outputFileName = "***"; // Name of the output file
// Create a converter instance for table extraction
CPDFConverterJsonTable converter = CPDFConvertFactroy.CreateConverter(CPDFConvertType.CPDFConvertTypeJsonTable, inputFilePath) as CPDFConverterJsonTable;
// Specify JSON conversion options
CPDFConvertJsonOptions jsonOptions = new CPDFConvertJsonOptions();
jsonOptions.IsAllowOCR = false; // Disable OCR during conversion
jsonOptions.IsAILayoutAnalysis = false; // Disable AI layout analysis
// Initialize error variable
ConvertError error = ConvertError.ERR_UNKNOWN;
// Convert tables from the PDF document to JSON format
converter.Convert(outputFolderPath, ref outputFileName, jsonOptions, ref error);
```

このコードをComPDFKitで利用することで、PDFファイルからテーブルを効率的に抽出し、構造化されたJSONデータに変換し、エンタープライズワークフローのシームレスな統合と自動化を促進することができます。さらに、OCRやAIレイアウト分析の無効化などのオプションにより、特定の要件に合わせて変換プロセスを柔軟にカスタマイズできます。

### C#でPDFからすべてのコンテンツを抽出する
以下は、ComPDFKitを使用してPDFドキュメントからテキスト、表、画像を含むすべてのコンテンツを同時に抽出する方法を示す完全なサンプルコードです。

```
string inputFilePath = "***"; // Path to the input PDF file
string outputFolderPath = "***"; // Path to the output folder
string outputFileName = "***"; // Name of the output file
// Create a converter instance for extracting text, tables, and images
CPDFConverterJsonPDF converter = CPDFConvertFactroy.CreateConverter(CPDFConvertType.CPDFConvertTypeJsonPDF, inputFilePath) as CPDFConverterJsonPDF;
// Specify JSON conversion options
CPDFConvertJsonOptions jsonOptions = new CPDFConvertJsonOptions();
jsonOptions.IsAllowOCR = false; // Disable OCR during conversion
jsonOptions.IsAILayoutAnalysis = false; // Disable AI layout analysis
// Initialize error variable
ConvertError error = ConvertError.ERR_UNKNOWN;
// Convert text, tables, and images from the PDF document to JSON format
converter.Convert(outputFolderPath, ref outputFileName, jsonOptions, ref error);
```

このコードは、ComPDFKitを使用して、PDFドキュメントからテキスト、表、および画像コンテンツを同時に抽出します。CPDFConvertJsonOptions オブジェクトで適切なオプションを指定することで、要件に応じて変換プロセスをカスタマイズできます。この例では、抽出プロセスを合理化するために、OCR と AI レイアウト分析が無効になっています。