ruby on rails - Ruby: leyendo archivos PDF
ruby-on-rails pdf-parsing (6)
Estoy buscando una forma rápida y confiable de leer / analizar grandes archivos PDF en Ruby (en Linux y OSX).
Hasta ahora he encontrado el PDF-toolkit bastante viejo y simple (un pdftotext wrapper) y PDF-reader , que no podía leer la mayoría de mis archivos. Aunque las dos bibliotecas proporcionan exactamente la funcionalidad que estaba buscando.
Mi pregunta: ¿Me he perdido algo? ¿Hay alguna herramienta que sea más adecuada (más rápida y más confiable) para resolver mi problema?
¿ CombinePDF un vistazo a la biblioteca de CombinePDF ?
Es una solución de rubí puro que permite la manipulación de PDF, como la extracción de páginas, la superposición de una página PDF sobre otra, la numeración de páginas, la escritura de texto y tablas básicas, etc. ''
Aquí hay un ejemplo para copiar un archivo PDF existente con un logotipo. El ejemplo lee un archivo PDF, extrae una página para usarla como sello y estampara otro archivo PDF.
require ''combine_pdf''
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf = CombinePDF.load "content_file.pdf"
pdf.pages.each {|page| page << company_logo}
pdf.save "content_with_logo.pdf"
También puede estampar texto, páginas de números o usar:
require ''combine_pdf''
pdf = CombinePDF.load "content_file.pdf"
pdf.number_pages #adds page numbers. you can add formatting and placement options.
pdf.pages.each {|page| page.textbox "One Way To Stamp"}
#you can a shortcut method to stamp pages
pdf.stamp_pages "Another way to stamp"
#you can use the shortcut method for both text and PDF stamps
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf.stamp_pages company_logo
# you can use write simple tables
pdf.pages[0].write_table headers: [''first name'', ''surname''], table_data: [[''John'', ''Doe''], [''Mr.'', ''Smith'']]
pdf.save "content_with_logo.pdf"
No está diseñado para operaciones complejas, pero complementa la mayoría de las bibliotecas de creación de PDF y le permite usar plantillas de PDF en lugar de escribir todo desde cero.
Aquí hay algunas opciones:
http://en.wikipedia.org/wiki/List_of_PDF_software
Desde ese enlace, y buscando sourceforge, hay un par de utilidades de línea de comandos que pueden hacer lo que quieras, como esta: http://pdftohtml.sourceforge.net/
Dependiendo de sus requisitos y de cómo se vean los PDF, podría usar la API de Google Docs (cargando el PDF y luego descargándolo como texto), o también podría probar algo como gocr . He tenido mucha suerte al analizar el texto de la imagen con gocr en el pasado, y solo tendrías que saltar al caparazón para hacerlo, como gocr -i whatever.pdf
(creo que funciona con archivos PDF).
La desventaja de todo esto es que no son implementaciones de Ruby puro, pero muchos de los buenos (y gratuitos) proyectos de OCR parecen hacerse de esa manera.
Después de probar diferentes métodos, estoy usando PDF-toolkit ahora. Es bastante viejo, pero es rápido, estable y confiable. Además, realmente no necesita ser nuevo, ya que simplemente ajusta las utilidades de línea de comandos de xpdf .
Puede encontrar útil Docsplit :
Docsplit es una utilidad de línea de comandos y una biblioteca de Ruby para dividir documentos en sus componentes: texto plano UTF-8 con búsqueda, imágenes de página o miniaturas en cualquier formato, archivos PDF, páginas individuales y metadatos de documentos (título, autor, número de páginas ...)
Puede usar JRuby y un analizador de bibliotecas PDF de Java, como ApachePDFBox ( https://www.ohloh.net/p/pdfbox ). Ver también http://java-source.net/open-source/pdf-libraries .
Si solo necesita obtener el contenido de texto de un archivo pdf, el pdftohtml en sourceforge es eficiente. no es adecuado para tratar con imágenes.