チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
PDF からテキストを抽出することは、特に日常的に何百もの PDF 文書を受け取っている場合には、困難な作業となることがあります。プログラムによるデータ抽出の自動化が必要になるのは、プログラムが文書を素早く大量に処理し、抽出された内容が絶対的に正確であることを保証するためです。この記事では、Spire.PDF for Java を使用して、検索可能な PDF 文書からテキストを抽出する方法について説明します。
まず、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() メソッドは、デフォルトで特定の抽出オプションを指定する必要なく、指定されたページからすべてのテキストを抽出します。詳細な手順は以下のとおりです。
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 を使用して、ページの矩形領域からテキストを抽出する方法を示しています。
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 を使用してテキストを抽出する場合、各文字列の現在の垂直位置を記録し、垂直位置が変更された場合、出力に改行を挿入します。以下、詳細な手順を説明します。
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 日間有効な一時ライセンスを取得してください。
PDF ドキュメントに埋め込まれた画像を他の場所で使用したい場合、それらを取り出してファイルフォルダに保存することができます。この記事では、Spire.PDF for Java を使用して PDF ドキュメントから画像を抽出する方法を紹介します。
まず、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.8.3</version>
</dependency>
</dependencies>
Spire.PDF for Java は、PDF ドキュメントから画像を抽出するための PdfPageBase.extractImages() メソッドを提供しています。詳細な手順は以下の通りです。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class extractImage {
public static void main(String[] args) throws IOException {
//PdfDocument クラスのインスタンスを作成する
PdfDocument doc = new PdfDocument();
//PDFドキュメントを読み込む
doc.loadFromFile("C:/例.pdf");
//int型変数を宣言する
int index = 0;
//全ページをループする
for (PdfPageBase page : (Iterable<PdfPageBase>) doc.getPages()) {
//ページからの画像を抽出する
for (BufferedImage image : page.extractImages()) {
//ファイルのパスと名前を指定する
File output = new File("C:/抽出した画像/" + String.format("Image_%d.png", index++));
//画像をPNGファイルとして保存する
ImageIO.write(image, "PNG", output);
}
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。