2009-06-02 41 views
10

Mi objetivo es extraer el texto y las imágenes de un archivo PDF al analizar su estructura. El alcance para analizar la estructura no es exhaustivo; Solo necesito poder identificar encabezados y párrafos.¿Cómo extraer datos de un archivo PDF sin perder de vista su estructura?

me han tratado un poco de cosas diferentes, pero no llegó muy lejos en cualquiera de ellos:

  • Convertir PDF a texto. No funciona para mí ya que pierdo imágenes y la estructura del documento.
  • Convierte PDF a HTML. Encontré algunas herramientas que me ayudaron con esto, y la mejor hasta ahora es pdftohtml. La herramienta es realmente buena para la presentación, pero no he podido analizar correctamente el HTML.
  • Convertir PDF a XML. Lo mismo que arriba.

¿Alguien tiene alguna sugerencia sobre cómo abordar este problema?

+0

qué no has sido capaz de analizar correctamente el html? –

+0

Quiero hacer un seguimiento de los títulos, y una forma de hacerlo fue identificarlos por su estilo. Algunos títulos tienen estilos mixtos, por lo que crea un pequeño problema. – Marcel

Respuesta

7

Básicamente, no es una solución fácil de cortar y pegar porque PDF no está muy interesado en la estructura. Hay muchas otras respuestas en este sitio que le dirá las cosas con mucho más detalle, pero éste debe darle los puntos principales:

If identifying text structure in PDF documents is so difficult, how do PDF readers do it so well?

Si usted quiere hacer esto en PDF en sí (en la que lo haría tener la mayoría del control sobre el proceso), tendrá que recorrer todo el texto en las páginas e identificar los encabezados mirando sus propiedades de texto (fuentes utilizadas, tamaño relativo al otro texto en la página, etc.).

Además de eso, también tendrá que identificar los párrafos mirando el posicionamiento de los fragmentos de texto, el espacio en blanco en la página, la cercanía de ciertas letras, palabras y líneas ... PDF por sí mismo ni siquiera tiene un concepto para una "palabra", y mucho menos "líneas" o "párrafos".

Para complicar las cosas aún más, la forma en que se dibuja el texto en la página (y por lo tanto el orden en que aparece en el archivo PDF) ni siquiera tiene que ser el orden de lectura correcto (o lo que nosotros los humanos considere que es el orden de lectura apropiado).

1

Usted puede hacer uso el siguiente enfoque de este tipo con iTextSharp u otras bibliotecas de código abierto:

  • archivo PDF Leer con la iTextSharp o similares herramientas de código abierto y recoger todos los objetos de texto en una matriz (o convertir PDF a HTML utilizando la herramienta como pdftohtml y luego analizar HTML)
  • clasificar todos los objetos de texto de coordenadas por lo que ellos tienen todos juntos
  • a continuación, iterar a través de objetos y comprobar la distancia entre ellos para ver si 2 o más objetos pueden ser fusionado en un solo párrafo o no

O puede utilizar la herramienta comercial como ByteScout PDF Extractor SDK que es capaz de hacer exactamente esto:

  • extraer texto e imágenes, junto con el análisis de la presentación del texto
  • XML o CSV, donde los objetos de texto se fusionan o dividen en párrafos dentro de una cuadrícula de diseño virtual
  • objetos a través de una API especial que permite direccionar cada objeto a través de su índice "virtual" de filas y columnas sin tener en cuenta cómo se almacena dentro del PDF original.

responsabilidad: estoy afiliada con ByteScout

0

iText api: PdfReader pr = new PdfReader ("C: \ test.pdf");

Referencias: PDFReader

+0

¿Qué quiere exactamente expresar con esa respuesta? – mkl

+0

Para leer un archivo pdf, podemos usar la clase PdfReader –

Cuestiones relacionadas