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
- Extrair texto de documentos PDF usando Java
- Extrair texto de páginas específicas de um documento PDF usando Java
- Obter imagens de documentos PDF usando Java
- Extraia imagens de páginas específicas de um documento PDF usando Java
- Extraia e salve imagens em arquivos usando Java
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 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:
- 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.getText() com índice de página para extrair o texto dessa página específica e obter resultados no objeto da classe TextReader.
- Por fim, mostre os resultados chamando o método TextReader.readToEnd() para ler o texto extraído.
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("----------------------------------------");
}
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++;
}
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.