PDF からテキストを抽出することは、特に日常的に何百もの PDF 文書を受け取っている場合には、困難な作業となることがあります。プログラムによるデータ抽出の自動化が必要になるのは、プログラムが文書を素早く大量に処理し、抽出された内容が絶対的に正確であることを保証するためです。この記事では、Spire.PDF for Java を使用して、検索可能な PDF 文書からテキストを抽出する方法について説明します。
Spire.PDF for Java をインストールします
まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>8.11.0</version>
</dependency>
</dependencies>
指定したページからテキストを抽出する
Spire.PDF for Java は、検索可能な PDF からテキストを抽出する PdfTextExtractor クラスと、抽出オプションを管理する PdfTextExtractOptions クラスを提供します。PdfTextExtractor.extract() メソッドは、デフォルトで特定の抽出オプションを指定する必要なく、指定されたページからすべてのテキストを抽出します。詳細な手順は以下のとおりです。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドで PDF ファイルを読み込みます。
- PdfDocument.getPages().get() メソッドで特定のページを取得します。
- PdfTextExtractor クラスのオブジェクトを作成します。
- PdfTextExtractor.extract() メソッドを使用して、選択されたページからテキストを抽出します。
- 抽出したテキストを TXT ファイルに書き出します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextExtractOptions;
import com.spire.pdf.texts.PdfTextExtractor;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class extractTextFromPage {
public static void main(String[] args) throws IOException {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("Java.pdf");
//最初のページを表示する
PdfPageBase page = doc.getPages().get(0);
//PdfTextExtractor クラスオブジェクトを作成する
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
//PdfTextExtractOptions クラスオブジェクトを作成する
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
//ページ内のテキストを抽出する
String text = textExtractor.extract(extractOptions);
//テキストをtxtファイルに書き出す
Files.write(Paths.get("抽出されたテキスト.txt"), text.getBytes());
}
}
矩形領域からテキストを抽出する
テキストを抽出する矩形領域を指定するには、PdfTextExtractOptions クラスの下にある setExtractArea() メソッドを使用する必要があります。次の手順は、Spire.PDF for Java を使用して、ページの矩形領域からテキストを抽出する方法を示しています。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを用いて PDF ファイルを読み込む。
- PdfDocument.getPages().get() メソッドを使用して、特定のページを取得する。
- PdfTextExtractor クラスのオブジェクトを作成します。
- PdfTextExtractOptions クラスのオブジェクトを作成し、その setExtractArea() メソッドを使用して矩形領域を指定します。
- PdfTextExtractor.extract() メソッドを使用して、矩形領域からテキストを抽出します。
- 抽出したテキストを TXT ファイルに書き出します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextExtractOptions;
import com.spire.pdf.texts.PdfTextExtractor;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class extractTextFromRectangleArea {
public static void main(String[] args) throws IOException {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("Java.pdf");
//最初のページを取得する
PdfPageBase page = doc.getPages().get(0);
//PdfTextExtractor クラスのオブジェクトを作成する
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
//PdfTextExtractOptions クラスのオブジェクトを作成する
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
//矩形領域からテキストを抽出するオプションを設定する
Rectangle2D rectangle2D = new Rectangle2D.Float(0, 300, 890, 170);
extractOptions.setExtractArea(rectangle2D);
//指定した領域からテキストを抽出する
String text = textExtractor.extract(extractOptions);
//テキストをtxtファイルに書き出す
Files.write(Paths.get("抽出されたテキスト.txt"), text.getBytes());
}
}
SimpleExtraction でテキストを抽出する
上記のメソッドは、テキストを一行ずつ抽出します。SimpleExtraction を使用してテキストを抽出する場合、各文字列の現在の垂直位置を記録し、垂直位置が変更された場合、出力に改行を挿入します。以下、詳細な手順を説明します。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドで PDF ファイルを読み込みます。
- PdfDocument.getPages().get() メソッドで特定のページを取得します。
- PdfTextExtractor クラスのオブジェクトを作成します。
- PdfTextExtractOptions クラスのオブジェクトを作成し、setSimpleExtraction() メソッドで SimpleExtraction を有効にします。
- PdfTextExtractor.ExtractText() メソッドでテキストを抽出します。
- 抽出されたテキストを TXT ファイルに書き出します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextExtractOptions;
import com.spire.pdf.texts.PdfTextExtractor;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class extractTextWithSimpleExtraction {
public static void main(String[] args) throws IOException {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("Java.pdf");
//最初のページを取得する
PdfPageBase page = doc.getPages().get(0);
//PdfTextExtractor クラスのオブジェクトを作成する
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
//PdfTextExtractOptions クラスのオブジェクトを作成する
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
//SimpleExtractionを有効にする
extractOptions.setSimpleExtraction(true);
//指定した領域からテキストを抽出する
String text = textExtractor.extract(extractOptions);
//抽出されたテキストをtxtファイルに書き出す
Files.write(Paths.get("抽出されたテキスト.txt"), text.getBytes());
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。