
Извлечь текст из файла PDF в Java
В этом быстро меняющемся мире объем данных растет экспоненциально. Файлы PDF широко используются для хранения и представления данных. Становится трудно просмотреть большое количество страниц PDF, чтобы получить доступ к полезным абзацам. Поэтому мы узнаем, как программно извлекать текст из PDF-файла на Java. Однако автоматизация всего процесса извлечения текста сэкономит время и усилия и повысит эффективность. Мы будем использовать простую в установке библиотеку PDF Java, которая предлагает настраиваемые методы для работы с файлами PDF.
В этом блоге будут освещены следующие моменты:
- Библиотека Java в формате PDF — этапы установки
- Извлечь текст из файла PDF в Java
- Как извлечь текст из определенной области страницы
- Библиотека Java для извлечения текста из файла PDF в виде абзацев
Библиотека Java в формате PDF — этапы установки
Вы можете легко установить эту библиотеку в свое Java-приложение, загрузив jar-файлы, или вы можете использовать следующие конфигурации Maven.
Репозиторий
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Зависимость
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>20.12</version>
<classifier>jdk17</classifier>
</dependency>
Извлечь текст из файла PDF в Java
В этом разделе мы напишем шаги и фрагмент кода, который извлекает текст со всех страниц PDF-документа.
Выполните следующие шаги:
- Откройте документ PDF, создав объект класса Document.
- Инициализировать объект класса TextAbsorber для извлечения текста.
- Вызовите метод getPages(), который принимает поглотитель для всех страниц.
- Получите извлеченный текст, вызвав метод getText().
- Запишите извлеченный текст в файл и закройте модуль записи.
Скопируйте и вставьте следующий фрагмент кода, чтобы программно извлечь текст из документа PDF.
// Откройте документ PDF, создав объект класса Document.
Document pdfDocument = new Document("INPUT-PDF-FILE");
// Инициализировать объект TextAbsorber для извлечения текста.
TextAbsorber textAbsorber = new TextAbsorber();
// Вызовите метод getPages(), который принимает поглотитель для всех страниц.
pdfDocument.getPages().accept(textAbsorber);
// Получите извлеченный текст, вызвав метод getText().
String extractedText = textAbsorber.getText();
try {
FileWriter writer = new FileWriter( "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
// Записать строку текста в файл
writer.write(extractedText);
// Закрыть поток
writer.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
Как извлечь текст из определенной области страницы
Эта библиотека также позволяет извлекать текст с нужной страницы PDF-документа.
Для этого мы выполним следующие шаги:
- Создайте объект класса Document и загрузите исходный файл PDF.
- Создайте объект класса TextAbsorber для извлечения данных.
- Вызовите метод getTextSearchOptions(), который позволяет определить прямоугольник, ограничивающий извлеченный текст.
- Вызовите getPages(), чтобы получить коллекцию страниц документа и принять поглотитель для первой страницы.
- Вызовите getText(), чтобы получить извлеченный текст и записать его в файл.
- Вызовите метод close(), чтобы закрыть поток.
Скопируйте и вставьте следующий фрагмент кода в файл Java:
// создайте объект класса Document и загрузите исходный файл PDF.
Document doc = new Document("INPUT-PDF-FILE");
// создать экземпляр объекта TextAbsorber для извлечения данных.
TextAbsorber absorber = new TextAbsorber();
// вызовите метод getTextSearchOptions(), который позволяет определить прямоугольник, ограничивающий извлеченный текст.-
absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
// вызовите getPages(), чтобы получить набор страниц документа и принять поглотитель для первой страницы.
doc.getPages().get_Item(1).accept(absorber);
// Вызовите getText(), чтобы получить извлеченный текст и записать его в файл.
String extractedText = absorber.getText();
// создать писатель и открыть файл
BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
// записать извлеченное содержимое
writer.write(extractedText);
// Близкий писатель
writer.close();
Библиотека Java для извлечения текста из файла PDF в виде абзацев
В этом разделе в абзацах демонстрируются следующие шаги и фрагменты кода для извлечения данных из PDF-документов.
- Инициализируйте объект класса Document и загрузите исходный файл PDF.
- Создайте объект класса ParagraphAbsorber.
- Вызовите visit(Document doc), который выполняет поиск разделов и абзацев в указанном документе.
- Вызовите getPageMarkups(), чтобы получить коллекцию PageMarkup, которые были поглощены.
- Перебрать коллекцию MarkupSection, найденную на странице, с помощью метода getSections().
- Вызовите этот метод getParagraphs(), который получает коллекцию MarkupParagraph, найденную на странице.
- Вызовите метод getLines() для перебора строк абзаца.
// Инициализируйте объект класса Document и загрузите исходный файл PDF.
Document doc = new Document( "./static/sample.pdf");
// Создайте объект класса ParagraphAbsorber.
ParagraphAbsorber absorber = new ParagraphAbsorber();
// Вызов визита(Document doc), который выполняет поиск разделов и абзацев в указанном документе.
absorber.visit(doc);
// Вызовите getPageMarkups(), чтобы получить коллекцию поглощенных PageMarkup.
for (PageMarkup markup : absorber.getPageMarkups()) {
int i = 1;
// Перебрать коллекцию MarkupSection, которая была найдена на странице, с помощью метода getSections().
for (MarkupSection section : markup.getSections()) {
int j = 1;
// Вызовите метод getParagraphs(), который получает коллекцию MarkupParagraph, найденную на странице. https://reference.aspose.com/pdf/java/com.aspose.pdf/page/Markup#getParagraphs--
for (MarkupParagraph paragraph : section.getParagraphs()) {
StringBuilder paragraphText = new StringBuilder();
// Вызовите метод getLines() для перебора строк абзаца.
for (java.util.List<TextFragment> line : paragraph.getLines()) {
for (TextFragment fragment : line) {
paragraphText.append(fragment.getText());
}
paragraphText.append("\r\n");
}
paragraphText.append("\r\n");
System.out.println("Paragraph "+j+" of section "+ i + " on page"+ ":"+markup.getNumber());
System.out.println(paragraphText.toString());
j++;
}
i++;
}
}
Получить бесплатную лицензию
Вы можете получить бесплатную временную лицензию, чтобы попробовать API без ограничений пробной версии.
Подведение итогов
Это подводит нас к концу этой статьи. Мы рассмотрели, как программно извлечь текст из файла PDF на Java. Кроме того, мы рассмотрели фрагменты кода для извлечения текста из определенной области страницы, а также изучили извлечение текста в форме абзаца. Кроме того, вы можете просмотреть документацию, чтобы изучить другие функции этой библиотеки Java в формате PDF. Наконец, conholdate.com постоянно пишет новые сообщения в блог. Поэтому, пожалуйста, оставайтесь на связи для получения последних обновлений.
Задайте вопрос
Если у вас возникнут вопросы, пишите нам на форум.