.net - texto - que significa que una etiqueta elemento esta deprecated en html
Programar mediante programaciĆ³n tablas en PDF (8)
Tengo un montón de documentos PDF con datos tabulares que debo extraer en un formato más legible para almacenarlos en una hoja de cálculo, una base de datos o lo que sea.
¿Hay algo en el mundo (preferiblemente libre) que pueda obtener datos tabulares de archivos PDF en un formato más legible a granel, ya sea integrado de forma nativa con una aplicación o de forma pasiva a través de línea de comando o bucleando el proceso en código (.net)?
Puede ser cualquier formato realmente (doc, html) siempre que se mantengan las tablas.
Todo lo que he encontrado hasta ahora es solo una vez (solo hace un documento a la vez, tengo cientos, eso no está pasando) o no mantiene la estructura de la tabla.
Cualquier idea por favor publicar.
Cuando tu dices
Todo lo que he encontrado hasta ahora ... solo hace un documento a la vez
Asumo que quieres decir "es una aplicación GUI, sin una interfaz de programación".
En este caso, podría usar Automatización de la interfaz de usuario de Microsoft para controlar la aplicación de forma programática y hacer que haga lo que desee.
UIA ... proporciona un medio para exponer y recopilar información sobre los elementos y controles de la interfaz de usuario para admitir la accesibilidad de la interfaz de usuario y la automatización de pruebas de software ... y es compatible tanto con Win32 como con .NET Framework.
El formato PDF se compila como una colección de letras, que no tienen un formato inherente ni nada. Puede pensar en PDF como una página que ha llegado a través del OCR y lo está tomando desde allí; las letras y sus coordenadas están ahí; el resto depende de usted, para descubrir el diseño, los formatos, las columnas y las tablas eventuales.
Teniendo en cuenta su requisito, la respuesta directa a su pregunta sería que no es posible. La razón es que, a diferencia de Word / Excel, la especificación PDF no tiene un objeto llamado Tabla. La tabla que ve en esos documentos PDF es simplemente una serie de rectángulos dibujados de tal manera que parece una tabla y depende de PDF Writer crear esos archivos PDF, porque algunos pueden dibujar una tabla tipo de estructura usando Series of Line.
Pero posiblemente podría escribir su propio analizador basado en la Especificación de archivos PDF , pero sigue siendo una tarea desalentadora si elige implementar su propio analizador y le llevará varios meses obtener uno que funcione con bastantes documentos PDF .
En caso, decidiste escribir tu propio analizador. El siguiente artículo te dará un salto inicial. Artículo de proyecto de código
Si todos los datos son datos de texto, siempre puede usar iTextSharp. Es gratis y solo necesitas el "itextsharp.dll".
http://sourceforge.net/projects/itextsharp/
Aquí hay una función simple para leer el texto de un PDF.
Public Shared Function GetTextFromPDF(PdfFileName As String) As String
Dim oReader As New iTextSharp.text.pdf.PdfReader(PdfFileName)
Dim sOut = ""
For i = 1 To oReader.NumberOfPages
Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy
sOut &= iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(oReader, i, its)
Next
Return sOut
End Function
Eso al menos te dará el texto para empezar.
Intenté extraer el texto plano de los archivos PDF utilizando herramientas como pdf2text, pero una gran parte de la tabla y el formato y la información de diseño se pierden para reconstruir con precisión la versión original.
Podría ser más exitoso usar una API PDF para extraer las posiciones x, y de los cuadros de texto y las líneas, y usar esa información para reconstruir la tabla.
Parece haber varias herramientas y API de terceros que prueban este enfoque:
La versión paga de Solid Framework parece ser capaz de extraer tablas de PDF a Excel y CSV de forma automática y bastante bien de los archivos PDF que he lanzado.
El PDF Mechanic gratuito parece ser un pequeño programa de GUI envuelto alrededor de Solid Framework, que puede usar para probar su técnica de extracción de PDF.
También existe la herramienta gratuita pdf2table, que es posible que pueda llamar desde su programa, pero aún no lo he probado.
Para obtener información general sobre por qué el formato de archivo PDF nunca debe considerarse adecuado para alojar datos estructurados extraíbles , consulte este artículo:
Para una asombrosa familia de herramientas que mejora cada semana para extraer datos tabulares de archivos PDF (a menos que sean páginas escaneadas), contradiciendo el punto ''1''. arriba vea estos enlaces:
Recientemente me encontré con este problema.
Una solución alternativa que encontré fue abrir un documento PDF en Adobe y exportarlo a xml. Al menos con mi PDF, conservaba la información de la tabla y luego pude trabajar programáticamente con XML para generar archivos tabulares como Excel, etc.
El otro problema con el que me encontré fue que Adobe solo te permite exportar un archivo a la vez y tuve muchos archivos. Por suerte, Adobe también tiene una función de fusión. Terminé fusionando todos los archivos y luego exportándolos como un gran archivo XML y trabajando con ese archivo para generar lo que necesitaba.
Esta es una molestia gigante. En general, la extracción del contenido de texto de un archivo PDF se ejecuta en contra de lo que PDF quiere que haga.
Comience tratando de sacar el texto. Esto puede ser más o menos exitoso, dependiendo de cómo se construya el PDF. Un lugar para comenzar es GhostScript o pstotext . Si eso te falla, este tipo tiene una lista de herramientas de extracción de texto . Una vez que tenga la secuencia de texto, podría intentar volver a ensamblar la estructura tabular programáticamente.
Finalmente, si se encuentra en muy mal estado, y si los PDF no cooperan, podría hacer lo de OCR. La solución adecuada a largo plazo es obtener los datos en el formato correcto desde el principio, ya sea mediante un proceso único, masivo, doloroso y, probablemente, parcialmente manual; o para ir a la fuente y sugerir que los datos se proporcionen en una forma más utilizable.
Si puede dar un archivo de ejemplo PDF más específico, puede haber una respuesta mejor o más precisa ... NO hay una solución general para esto, si es posible, deberá adaptarse a sus datos de origen específicos.
Tenga en cuenta que esta respuesta más bien puntual a la pregunta general ... no ayuda con el hecho de que tiene el problema frente a usted, pero tal vez le proporcionaría una tapa útil cuando le explique a su jefe por qué no hay una respuesta obvia. ;-)
Apareció una nueva pregunta SO, y se refirió a esta biblioteca - iTextSharp - que posiblemente esté relacionada. ASÍ pregunta: La mejor manera de extraer ...