PDF からテキストを抽出することは、特に日常的に何百もの PDF 文書を受け取っている場合には、困難な作業となることがあります。プログラムによるデータ抽出の自動化が必要になるのは、プログラムが文書を素早く大量に処理し、抽出された内容が絶対的に正確であることを保証するためです。この記事では、Spire.PDF for Java を使用して、検索可能な PDF 文書からテキストを抽出する方法について説明します。 指定したページからテキストを抽出する 矩形領域からテキストを抽出する SimpleExtraction でテキストを抽出する 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 日間有効な一時ライセンスを取得してください。