Извлечение текста и изображений из PDF-документов с помощью Java

PDF — наиболее широко используемый формат цифровых документов. Мы можем анализировать PDF-документы и программно извлекать из них текст и изображения. Это может быть полезно в нескольких случаях, таких как анализ текста, поиск информации, преобразование документов и т. д. В этой статье мы узнаем, как извлекать текст и изображения из документов PDF с помощью Java.

В этой статье должны быть раскрыты следующие темы:

Java API для извлечения текста и изображений из PDF-документов

Для извлечения текста и изображений из документов PDF мы будем использовать GroupDocs.Parser for Java API. Он позволяет извлекать необработанный, форматированный и структурированный текст, метаданные и изображения из файлов поддерживаемых форматов. Пожалуйста, либо загрузите JAR API, либо добавьте следующую конфигурацию pom.xml в приложение Java на основе Maven.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>22.3</version> 
</dependency>

Извлечение текста из PDF-документов с помощью Java

Мы можем разобрать любой PDF-документ и извлечь текст, выполнив следующие шаги:

  • Во-первых, загрузите файл PDF с помощью класса Parser.
  • Затем вызовите метод Parser.getText() для извлечения текста из загруженного документа.
  • Затем получите результаты в объекте класса TextReader.
  • Наконец, вызовите метод TextReader.readToEnd(), чтобы прочитать все символы от текущей позиции до конца средства чтения текста и вернуть их как одну строку.

В следующем примере кода показано, как извлечь текст из файла PDF с помощью Java.

// В этом примере кода показано, как анализировать PDF-файл и извлекать текст.
// Создайте экземпляр класса Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Извлечь текст в ридер
try (TextReader reader = parser.getText()) {
    // Распечатать текст из документа
    // Если извлечение текста не поддерживается, средство чтения недействительно.
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Извлечение текста из PDF-документов с помощью Java

Извлечение текста из PDF-документов с помощью Java

Извлечь текст с определенной страницы документа PDF с помощью Java

Вы можете проанализировать документ PDF и извлечь текст с определенной страницы, выполнив простые шаги, указанные ниже:

  • Во-первых, загрузите файл PDF с помощью класса Parser.
  • Затем получите информацию о документе с помощью метода Parser.getDocumentInfo().
  • Затем проверьте, не равно ли значение IDocumentInfo.getPageCount() нулю.
  • После этого вызовите метод Parser.getText() с индексом страницы, чтобы извлечь текст с этой конкретной страницы и получить результаты в объекте класса TextReader.
  • Наконец, покажите результаты, вызвав метод TextReader.readToEnd() для чтения извлеченного текста.

В следующем примере кода показано, как извлечь текст с определенной страницы с помощью Java.

// В этом примере кода показано, как анализировать PDF-файл и извлекать текст с определенной страницы.
// Создайте экземпляр класса Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Получить информацию о документе
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Проверить, есть ли в документе страницы
if (documentInfo == null || documentInfo.getRawPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

// Извлечь текст в ридер
try (TextReader reader = parser.getText(1)) {
    // Распечатать текст из документа
    // Если извлечение текста не поддерживается, средство чтения недействительно.
    System.out.println(reader.readToEnd());
}

API также позволяет проверить, поддерживает ли документ функцию расширения текста. Для этого мы можем использовать свойство Parser.getFeatures().isText(). Пожалуйста, прочитайте больше о поддерживаемых функциях.

Получить изображения из PDF-документов с помощью Java

Мы можем разобрать любой PDF-документ и извлечь изображения, выполнив следующие шаги:

  • Во-первых, загрузите файл PDF с помощью класса Parser.
  • Затем вызовите метод Parser.getImages() и получите коллекцию объектов PageImageArea из загруженного документа.
  • Затем проверьте, не является ли коллекция нулевой.
  • После этого перебираем все найденные изображения.
  • Наконец, покажите детали изображения.

В следующем примере кода показано, как получить сведения об изображениях из файла PDF с помощью Java.

// В этом примере кода показано, как анализировать PDF-файл и получать изображения.
// Создайте экземпляр класса Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Извлечь изображения
Iterable<PageImageArea> images = parser.getImages();

// Проверьте, поддерживается ли извлечение изображений
if (images == null) {
    System.out.println("Images extraction isn't supported");
    return;
}

// Перебирать изображения
for (PageImageArea image : images) {
    // Распечатайте индекс страницы, прямоугольник и тип изображения:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}
Получение изображений из PDF-документов с помощью Java

Получить изображения из PDF-документов с помощью Java

Извлечение изображений с определенной страницы документа PDF с использованием Java

Мы можем извлечь изображения с определенной страницы, выполнив простые шаги, указанные ниже:

  • Во-первых, загрузите файл PDF с помощью класса Parser.
  • Затем получите информацию о документе с помощью метода Parser.getDocumentInfo().
  • Затем проверьте, не равно ли значение IDocumentInfo.getPageCount() нулю.
  • После этого вызовите метод Parser.getImages() с индексом страницы, чтобы извлечь изображения с этой конкретной страницы.
  • Наконец, переберите все найденные изображения и покажите детали.

В следующем примере кода показано, как извлечь изображения с определенной страницы с помощью Java.

// В этом примере кода показано, как анализировать PDF-файл и получать изображения с определенной страницы.
// Создайте экземпляр класса Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Получить информацию о документе
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Проверить, есть ли в документе страницы
if (documentInfo.getPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

int pageIndex = 1;

// Перебирать изображения
// Мы игнорируем проверку нуля, так как мы проверили поддержку функции извлечения изображений ранее.
for (PageImageArea image : parser.getImages(pageIndex)) {
  // Распечатайте индекс страницы, прямоугольник и тип изображения:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}

Извлечение и сохранение изображений в файлы с помощью Java

Мы также можем сохранить извлеченные изображения, выполнив следующие действия:

  • Во-первых, загрузите файл PDF с помощью класса Parser.
  • Затем вызовите метод Parser.getImages() и получите коллекцию объектов PageImageArea из загруженного документа.
  • Затем создайте экземпляр класса ImageOptions и задайте формат изображения.
  • После этого перебираем все найденные изображения.
  • Наконец, сохраните с помощью метода save(). Он принимает путь к выходному файлу и ImageOptions в качестве аргументов.

В следующем примере кода показано, как извлекать и сохранять изображения в файлы с помощью Java.

// В этом примере кода показано, как извлекать изображения и изображения в каталоге.
// Создайте экземпляр класса Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Извлечь изображения из документа
Iterable<PageImageArea> images = parser.getImages();

// Проверьте, поддерживается ли извлечение изображений
if (images == null) {
    System.out.println("Page images extraction isn't supported");
    return;
}

// Создайте параметры для сохранения изображений в формате PNG
ImageOptions options = new ImageOptions(ImageFormat.Png);

int imageNumber = 0;

// Перебирать изображения
for (PageImageArea image : images)
{
    // Сохраните изображение в файл PNG
    image.save(String.format("D:\\Files\\Parser\\Images\\%d.png", imageNumber), options);
    imageNumber++;
}
Извлечение и сохранение изображений в файлы с помощью Java

Извлечение и сохранение изображений в файлы с помощью Java

Получить бесплатную лицензию

Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.

Вывод

В этой статье мы узнали, как:

  • извлекать весь текст из всего документа PDF или отдельных страниц документа с помощью Java;
  • извлекать изображения из PDF-файла программно;
  • сохранять извлеченные изображения на локальный диск.

Кроме того, вы можете узнать больше о GroupDocs.Parser for Java API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также