Extraiga texto e imágenes de documentos PDF usando Java

PDF es el formato de documento digital más utilizado. Podemos analizar documentos PDF y extraer texto e imágenes de ellos mediante programación. Puede ser útil en varios casos, como análisis de texto, recuperación de información, conversión de documentos, etc. En este artículo, aprenderemos cómo extraer texto e imágenes de documentos PDF usando Java.

En este artículo se tratarán los siguientes temas:

API de Java para extraer texto e imágenes de documentos PDF

Para extraer texto e imágenes de documentos PDF, utilizaremos la API GroupDocs.Parser para Java. Permite la extracción de texto, metadatos e imágenes sin procesar, formateados y estructurados de archivos de los formatos admitidos. Descargue el JAR de la API o agregue la siguiente configuración pom.xml en una aplicación Java basada en 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>

Extraiga texto de documentos PDF usando Java

Podemos analizar cualquier documento PDF y extraer texto siguiendo los pasos que se detallan a continuación:

  • En primer lugar, cargue el archivo PDF usando la clase Parser.
  • A continuación, llame al método Parser.getText() para extraer texto del documento cargado.
  • Luego, obtenga resultados en el objeto de clase TextReader.
  • Finalmente, llame al método TextReader.readToEnd() para leer todos los caracteres desde la posición actual hasta el final del lector de texto y devolverlos como una sola cadena.

El siguiente ejemplo de código muestra cómo extraer texto de un archivo PDF usando Java.

// Este ejemplo de código demuestra cómo analizar un PDF y extraer texto.
// Crear una instancia de la clase Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Extraer un texto en el lector
try (TextReader reader = parser.getText()) {
    // Imprimir un texto del documento
    // Si no se admite la extracción de texto, un lector es nulo
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Extraiga texto de documentos PDF usando Java

Extraiga texto de documentos PDF usando Java

Extraiga texto de una página específica de un documento PDF usando Java

Puede analizar un documento PDF y extraer texto de una página específica siguiendo los sencillos pasos que se mencionan a continuación:

El siguiente ejemplo de código muestra cómo extraer texto de una página específica usando Java.

// Este ejemplo de código demuestra cómo analizar un PDF y extraer texto de una página específica.
// Crear una instancia de la clase Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Obtener la información del documento
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Comprobar si el documento tiene páginas
if (documentInfo == null || documentInfo.getRawPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

// Extraer un texto en el lector
try (TextReader reader = parser.getText(1)) {
    // Imprimir un texto del documento
    // Si no se admite la extracción de texto, un lector es nulo
    System.out.println(reader.readToEnd());
}

La API también permite comprobar si el documento es compatible con la función de extracción de texto. Para este propósito, podemos usar la propiedad Parser.getFeatures().isText(). Obtenga más información sobre las características admitidas.

Obtenga imágenes de documentos PDF usando Java

Podemos analizar cualquier documento PDF y extraer imágenes siguiendo los pasos que se detallan a continuación:

  • En primer lugar, cargue el archivo PDF usando la clase Parser.
  • A continuación, llame al método Parser.getImages() y obtenga una colección de objetos PageImageArea del documento cargado.
  • Luego, verifique si la colección no es nula.
  • Después de eso, itera sobre todas las imágenes encontradas.
  • Finalmente, muestra los detalles de las imágenes.

El siguiente ejemplo de código muestra cómo obtener detalles de imágenes de un archivo PDF usando Java.

// Este ejemplo de código demuestra cómo analizar un PDF y obtener imágenes.
// Crear una instancia de la clase Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Extraer imágenes
Iterable<PageImageArea> images = parser.getImages();

// Compruebe si se admite la extracción de imágenes
if (images == null) {
    System.out.println("Images extraction isn't supported");
    return;
}

// Iterar sobre imágenes
for (PageImageArea image : images) {
    // Imprima un índice de página, un rectángulo y un tipo de imagen:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}
Obtenga imágenes de documentos PDF usando Java

Obtenga imágenes de documentos PDF usando Java

Extraiga imágenes de una página específica de un documento PDF usando Java

Podemos extraer imágenes de una página específica siguiendo los sencillos pasos que se mencionan a continuación:

  • En primer lugar, cargue el archivo PDF usando la clase Parser.
  • A continuación, obtenga la información del documento mediante el método Parser.getDocumentInfo().
  • Luego, verifique si IDocumentInfo.getPageCount() no es cero.
  • Después de eso, llama al método Parser.getImages() con índice de página para extraer imágenes de esa página específica.
  • Finalmente, itere sobre todas las imágenes encontradas y muestre los detalles.

El siguiente ejemplo de código muestra cómo extraer imágenes de una página específica usando Java.

// Este ejemplo de código demuestra cómo analizar un PDF y obtener imágenes de una página específica.
// Crear una instancia de la clase Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Obtener la información del documento
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Comprobar si el documento tiene páginas
if (documentInfo.getPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

int pageIndex = 1;

// Iterar sobre imágenes
// Ignoramos la verificación nula ya que hemos verificado la compatibilidad con la función de extracción de imágenes anteriormente
for (PageImageArea image : parser.getImages(pageIndex)) {
  // Imprima un índice de página, un rectángulo y un tipo de imagen:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}

Extraiga y guarde imágenes en archivos usando Java

También podemos guardar las imágenes extraídas siguiendo los pasos que se detallan a continuación:

  • En primer lugar, cargue el archivo PDF usando la clase Parser.
  • A continuación, llame al método Parser.getImages() y obtenga una colección de objetos PageImageArea del documento cargado.
  • Luego, crea una instancia de la clase ImageOptions y configura el formato de la imagen.
  • Después de eso, itera sobre todas las imágenes encontradas.
  • Finalmente, guarde usando el método save(). Toma la ruta del archivo de salida y ImageOptions como argumentos.

El siguiente ejemplo de código muestra cómo extraer y guardar imágenes en archivos usando Java.

// Este ejemplo de código demuestra cómo extraer e imágenes en el directorio.
// Crear una instancia de la clase Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Extraer imágenes del documento
Iterable<PageImageArea> images = parser.getImages();

// Compruebe si se admite la extracción de imágenes
if (images == null) {
    System.out.println("Page images extraction isn't supported");
    return;
}

// Crea las opciones para guardar imágenes en formato PNG
ImageOptions options = new ImageOptions(ImageFormat.Png);

int imageNumber = 0;

// Iterar sobre imágenes
for (PageImageArea image : images)
{
    // Guarde la imagen en el archivo PNG
    image.save(String.format("D:\\Files\\Parser\\Images\\%d.png", imageNumber), options);
    imageNumber++;
}
Extraiga y guarde imágenes en archivos usando Java

Extraiga y guarde imágenes en archivos usando Java

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

En este artículo, hemos aprendido a:

  • extraer todo el texto de un documento PDF completo o páginas específicas del documento usando Java;
  • extraer imágenes de un archivo PDF mediante programación;
  • guardar las imágenes extraídas en un disco local.

Además, puede obtener más información sobre GroupDocs.Parser para la API de Java utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.

Ver también