Extraia texto e imagens de documentos PDF usando Java

PDF é o formato de documento digital mais utilizado. Podemos analisar documentos PDF e extrair texto e imagens deles programaticamente. Pode ser útil em vários casos, como análise de texto, recuperação de informações, conversão de documentos, etc. Neste artigo, aprenderemos como extrair texto e imagens de documentos PDF usando Java.

Os seguintes tópicos serão abordados neste artigo:

API Java para extrair texto e imagens de documentos PDF

Para extrair texto e imagens de documentos PDF, usaremos a API GroupDocs.Parser for Java. Ele permite a extração de texto bruto, formatado e estruturado, metadados e imagens de arquivos dos formatos suportados. Faça o download do JAR da API ou adicione a seguinte configuração pom.xml em um aplicativo Java baseado em 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>

Extrair texto de documentos PDF usando Java

Podemos analisar qualquer documento PDF e extrair texto seguindo as etapas abaixo:

  • Primeiramente, carregue o arquivo PDF usando a classe Parser.
  • Em seguida, chame o método Parser.getText() para extrair o texto do documento carregado.
  • Em seguida, obtenha resultados no objeto de classe TextReader.
  • Por fim, chame o método TextReader.readToEnd() para ler todos os caracteres da posição atual até o final do leitor de texto e devolvê-los como uma string.

O exemplo de código a seguir mostra como extrair texto de um arquivo PDF usando Java.

// Este exemplo de código demonstra como analisar um PDF e extrair texto.
// Crie uma instância da classe Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Extraia um texto para o leitor
try (TextReader reader = parser.getText()) {
    // Imprimir um texto do documento
    // Se a extração de texto não for compatível, um leitor será nulo
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Extrair texto de documentos PDF usando Java

Extrair texto de documentos PDF usando Java

Extrair texto de uma página específica de um documento PDF usando Java

Você pode analisar um documento PDF e extrair texto de uma página específica seguindo as etapas simples mencionadas abaixo:

O exemplo de código a seguir mostra como extrair texto de uma página específica usando Java.

// Este exemplo de código demonstra como analisar um PDF e extrair texto de uma página específica.
// Crie uma instância da classe Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Obtenha as informações do documento
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Verifique se o documento tem páginas
if (documentInfo == null || documentInfo.getRawPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

// Extraia um texto para o leitor
try (TextReader reader = parser.getText(1)) {
    // Imprimir um texto do documento
    // Se a extração de texto não for compatível, um leitor será nulo
    System.out.println(reader.readToEnd());
}

A API também permite verificar se o documento suporta o recurso de extração de texto. Para isso, podemos usar a propriedade Parser.getFeatures().isText(). Leia mais sobre recursos suportados.

Obter imagens de documentos PDF usando Java

Podemos analisar qualquer documento PDF e extrair imagens seguindo as etapas abaixo:

  • Primeiramente, carregue o arquivo PDF usando a classe Parser.
  • Em seguida, chame o método Parser.getImages() e obtenha a coleção de objetos PageImageArea do documento carregado.
  • Em seguida, verifique se a coleção não é nula.
  • Depois disso, itere sobre todas as imagens encontradas.
  • Por fim, mostre os detalhes das imagens.

O exemplo de código a seguir mostra como obter detalhes de imagens de um arquivo PDF usando Java.

// Este exemplo de código demonstra como analisar um PDF e obter imagens.
// Crie uma instância da classe Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Extrair imagens
Iterable<PageImageArea> images = parser.getImages();

// Verifique se a extração de imagens é suportada
if (images == null) {
    System.out.println("Images extraction isn't supported");
    return;
}

// Iterar sobre imagens
for (PageImageArea image : images) {
    // Imprima um índice de página, retângulo e tipo de imagem:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}
Obtenha imagens de documentos PDF usando Java

Obter imagens de documentos PDF usando Java

Extraia imagens de uma página específica de um documento PDF usando Java

Podemos extrair imagens de uma página específica seguindo os passos simples mencionados abaixo:

  • Primeiramente, carregue o arquivo PDF usando a classe Parser.
  • Em seguida, obtenha as informações do documento usando o método Parser.getDocumentInfo().
  • Em seguida, verifique se o IDocumentInfo.getPageCount() não é zero.
  • Depois disso, chame o método Parser.getImages() com índice de página para extrair imagens dessa página específica.
  • Finalmente, itere sobre todas as imagens encontradas e mostre detalhes.

O exemplo de código a seguir mostra como extrair imagens de uma página específica usando Java.

// Este exemplo de código demonstra como analisar um PDF e obter imagens de uma página específica.
// Crie uma instância da classe Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Obtenha as informações do documento
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Verifique se o documento tem páginas
if (documentInfo.getPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

int pageIndex = 1;

// Iterar sobre imagens
// Ignoramos a verificação nula, pois verificamos o suporte ao recurso de extração de imagens anteriormente
for (PageImageArea image : parser.getImages(pageIndex)) {
  // Imprima um índice de página, retângulo e tipo de imagem:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}

Extraia e salve imagens em arquivos usando Java

Também podemos salvar as imagens extraídas seguindo as etapas abaixo:

  • Primeiramente, carregue o arquivo PDF usando a classe Parser.
  • Em seguida, chame o método Parser.getImages() e obtenha a coleção de objetos PageImageArea do documento carregado.
  • Em seguida, crie uma instância da classe ImageOptions e defina o formato da imagem.
  • Depois disso, itere sobre todas as imagens encontradas.
  • Finalmente, salve usando o método save(). Ele usa o caminho do arquivo de saída e ImageOptions como argumentos.

O exemplo de código a seguir mostra como extrair e salvar imagens em arquivos usando Java.

// Este exemplo de código demonstra como extrair e imagens no diretório.
// Crie uma instância da classe Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Extrair imagens do documento
Iterable<PageImageArea> images = parser.getImages();

// Verifique se a extração de imagens é suportada
if (images == null) {
    System.out.println("Page images extraction isn't supported");
    return;
}

// Crie as opções para salvar imagens no formato PNG
ImageOptions options = new ImageOptions(ImageFormat.Png);

int imageNumber = 0;

// Iterar sobre imagens
for (PageImageArea image : images)
{
    // Salve a imagem no arquivo PNG
    image.save(String.format("D:\\Files\\Parser\\Images\\%d.png", imageNumber), options);
    imageNumber++;
}
Extraia e salve imagens em arquivos usando Java

Extraia e salve imagens em arquivos usando Java

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, aprendemos como:

  • extrair todo o texto de um documento PDF inteiro ou páginas específicas do documento usando Java;
  • extrair imagens de um arquivo PDF programaticamente;
  • salve as imagens extraídas em um disco local.

Além disso, você pode aprender mais sobre GroupDocs.Parser for Java API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também