|
Página 1 de 2
|
Autor |
Mensaje |
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Analizar Archivos PDF
Hola a todos.
Estoy haciendo un programa para pasar pdf a epub. Actualmente trato cada página del pdf como imagen y le aplico un OCR con tesseract.
Funciona mas o menos bien, pero existen los casos, bastantes casos la verdad, en los que los pdf son texto embebido junto con imágenes y no una imagen "escaneada". Es en este tipo de archivos que me interesaría extraer el texo del pdf directamente.
Algún consejo?ok, encontre esta utilidad que es la que voy a usar.
https://stackoverflow.com/questions...to-its-location
Pero me gustarias saber de antemano si el pdf es de imagen ,ecaneado digamos, o de texto embebido.
¿Alguien sabe como "ver" esto en un pdf desde un script bash o gambas etc?
Saludos.
última edición por tincho el Martes, 31 Julio 2018, 16:49; editado 1 vez
|
#1 Martes, 31 Julio 2018, 16:41 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Analizar Archivos PDF
.... texto embebido junto con imágenes...
...es decir texto " fundido" con el pdf ?
O que ?
última edición por vuott el Martes, 31 Julio 2018, 17:08; editado 2 veces
|
#2 Martes, 31 Julio 2018, 16:55 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Analizar Archivos PDF
Puedes extraer el texto con la utilidad pdftotext de las poppler utilities (en el repositorio de Ubuntu vienen), más o menos con
pdftotext --layout --nopgbrk fichero.pdf fichero.txt
y compara con el original.
Si tu original contiene mezcladas páginas escaneadas con páginas mixtas... pues no sé, el tema se complica.
=================== No podemos regresar
última edición por shordi el Martes, 31 Julio 2018, 18:10; editado 1 vez
|
#3 Martes, 31 Julio 2018, 18:08 |
|
|
imagomundi
Alberto Alejandro Moyano
Usuario
Registrado: Noviembre 2009
Mensajes: 33
Edad: 60 Ubicación: Buenos Aires
|
Re: Analizar Archivos PDF
Tincho, que tipo de pdf son los que quieres convertir a epub, libros estándares de mercado (formatos 12x17, 14x20, 15x22) libros de formato académico (17x24, 18x23) o revistas de formato europeo (20x28, 23x23, 24x30), estos formatos no son todos, hay muchos más.
Te imaginaras que no da lo mismo cualquier conversión, ya que además de la forma en como fue generado ese pdf (desde que programa), también está el tema de como fue editado, quiero decir, no es lo mismo un pdf en formato 15x22 (por ejemplo) desde word que desde InDesing o desde LaTeX, el header del archivo pdf es diferente y el tratamiento de las etiquetas internas también lo es.
Por otro lado depende de que codificación fue utilizada: latin1, utf8, utf16 o utf32, esto está directamente relacionado con los idiomas dentro del libro.
Todo lo anterior va a influir en gran parte sobre el nivel de complicación tiene dicha conversión a texto, y no importa con que aplicación o técnica lo hagas.
En mi experiencia las conversiones de libros en formato pdf (donde no tengo chance de obtener al texto original) para el paso a epub uso las sugerencias de las bibliotecas de KOMA (pero no uso KOMA, solo me quedo con sus ideas), esto es, mantener el formato pdf y llevarlo a tamaño A5 con margenes de 12pt (4,2mm) sin pérdida de escala tipográfica.
Si el pdf original fue preparado para imprenta (esto es en alta definición) bajarlo a 144dpi, esta baja de dpi solo afecta a las imágenes ya que las tipografías están embebidas en formato binario (y la resolución está asociada al dispositivo), cuando no son remplazadas por el lector (caso Kindle si además haces la conversión a mobi).
Aún así ¿es posible hacer lo que quieres?, sí. pero la relación inconvenientes / tiempo de trabajo / resultado, llevan más para perder que para ganar.
Puedes hacer este pequeño ejercicio, abre un pdf con 3 editores de pdf (no visores, editores) y verás que tienen un tratamiento diferente dentro de la edición para las líneas y los párrafos. La explicación a esto radica en que en el lenguaje PostScript existen diferentes formas de escribir código para obtener lo mismo (visualmente hablando), esto va desde usar funciones directas de bajo nivel hasta llegar al uso de diccionarios y/o pilas, por decir algunas.
Aún así, si quieres seguir investigando, te sugiero que vayas por el lado de PANDOC (https://pandoc.org/) una vez que tengas el texto limpio es una de las formas más rápidas y prolijas de llegar el apub, yo lo uso bastante para mis conversiones word --> LaTeX, donde funciona al 100% de lo que word permite interpretar pero me alcanza para terminar el libro en LaTeX.
Respecto de las imágenes que en realidad son texto en formato de imagen, no hay nada que se pueda hacer, más que volver a tipearlo.
Sls
última edición por imagomundi el Martes, 31 Julio 2018, 19:44; editado 1 vez
|
#4 Martes, 31 Julio 2018, 18:55 |
|
|
imagomundi
Alberto Alejandro Moyano
Usuario
Registrado: Noviembre 2009
Mensajes: 33
Edad: 60 Ubicación: Buenos Aires
|
Re: Analizar Archivos PDF
Me hice unos minutos para hacer una prueba de conversión desde pdf a txt y a doc, las herramientas que utilicé son MasterPDF (versión gratuita) y Acrobat Profesional 9 (por la versión paga que suso, verás que hace rato que deje de pagar soft privativo ).
La conversión hecha por MasterPDF a txt es 100% limpia, repito 100%, pero se pierde toda la estructura.
Ventajas: 0 (cero) error tipográfico en el resultado por posible mala interpretación del texto
Desventaja: se pierde toda la estructura tipográfica (me refiero al diseño tipográfico del título, secciones, etc.)
La conversión hecha por Acrobat Profesional a doc 97 es HORRIBLE, llena de basura, con las etiquetas erróneas, etc.
La conversión hecha a txt es igual que con MasterPDF, 100% limpia
Una posible salida es:
MasterPDF para pasar a txt
Pandoc para pasar txt a epub
En el medio no se puede evitar el trabajo de edición.
MaserPDF (https://code-industry.net/masterpdfeditor/)
Pero me gustarias saber de antemano si el pdf es de imagen ,ecaneado digamos, o de texto embebido.
¿Alguien sabe como "ver" esto en un pdf desde un script bash o gambas etc?
Al hacer la conversión se exportan todas las imágenes contenidas en el pdf, así ya sabrías de antemano que es imagen y que es texto en el susodicho pdf
Sls
última edición por imagomundi el Martes, 31 Julio 2018, 20:46; editado 3 veces
|
#5 Martes, 31 Julio 2018, 20:13 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Analizar Archivos PDF
Bueno repasando un poco.
Vuott: Lo que me interesa saber es si cad apagina del PDF es un scan (mapa de bits) o texto (cadena de caracters)
Shordi: Voy a usar esa utilidad pdftotext.
Alberto: De momento el tema formatos no esta entre mis prioridades ya que lo que busco es extraer un texto limpio para crear un html y luego con este contruir el epub sin pandoc, lo hare con código gambas.
Saludos.
|
#6 Martes, 31 Julio 2018, 22:15 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Analizar Archivos PDF
Vuott: Lo que me interesa saber es si cad apagina del PDF es un scan (mapa de bits) o texto (cadena de caracters)
De todas formas para extraer el texto de un archivo PDF, tú puedes usar los recursos externos de la libreria " libpoppler-glib".
Ad exemplum:
Library "libpoppler-glib"
Private poppler_error As String[] = [Null, "INVALID", "ENCRYPTED", "OPEN_FILE", "BAD_CATALOG", "DAMAGED"]
' popplerDocument *poppler_document_new_from_file (const char *uri, const char *password, GError **error)
' Creates a new PopplerDocument.
Private Extern poppler_document_new_from_file(uri As String, password As String, GError As Pointer) As Pointer
' PopplerPage * poppler_document_get_page (PopplerDocument *document, int index)
' Returns the PopplerPage indexed at index.
Private Extern poppler_document_get_page(document As Pointer, index As Integer) As Pointer
' char * poppler_page_get_text (PopplerPage *page)
' Retrieves the text of page.
Private Extern poppler_page_get_text(page As Pointer) As Pointer
' void g_object_unref (gpointer object)
' Decreases the reference count of object.
Private Extern g_object_unref(gobject As Pointer)
Public Sub Main()
Dim ruta As String
Dim doc, pag, p As Pointer
ruta = "/ruta/del/archivo.pdf"
doc = poppler_document_new_from_file("file://" & ruta, Null, VarPtr(p))
If doc = 0 Then Error.Raise("Error: " & poppler_error[String@(p)])
pag = poppler_document_get_page(doc, 0)
If pag = 0 Then Error.Raise("Error !")
p = poppler_page_get_text(pag)
If p = 0 Then Error.Raise("Error !")
Print String@(p)
g_object_unref(pag)
g_object_unref(doc)
End
última edición por vuott el Martes, 31 Julio 2018, 23:58; editado 1 vez
|
#7 Martes, 31 Julio 2018, 23:57 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Analizar Archivos PDF
Bueno gracias a todos.
Estoy usando la utilidad pdftotext que me daba buenos resultados hasta que me tope con PDF de doble pagina por hoja.
Según la documentación de pdftotext este permite (o así lo entendí) tomar solo un fragmento de la hoja diciendo indicando un desplazamiento y un tamaño de la caja de recorte, pero no funciona de ninguna manera.
El comando que uso es:
pdftotext -layout -f 1 -l 1 -x 396 -W 396 documento.pdf extraccion.txt
Para extraer la pagina 1 lateral derecho
pdftotext -layout -f 1 -l 1 -W 396 documento.pdf extraccion.txt
Para extraer la pagina 1 lateral izquierdo
Estoy usando este PDF
¿Alguna idea?
Saludos.
|
#8 Miercoles, 08 Agosto 2018, 01:23 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Analizar Archivos PDF
No creo que el tema de coordenadas ese esté pensado para texto. La ayuda habla de píxels, supongo que es para imágenes o vaya usted a saber cómo se usa.
Puedes intentar dejarlo tal cual con el -layout y trabajarlo después en gambas... pero veo complicadísimo el hacer un sistema que funcione con cualquier archivo (anchos de columna distintos, páginas mezcladas de una o dos columnas, etc. etc.)
Ya nos cuentas
=================== No podemos regresar
|
#9 Miercoles, 08 Agosto 2018, 10:04 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Analizar Archivos PDF
Tal vez un rodeo a la solución sea crear un pdf intermedio donde cada sheet sea de una pagina.
https://unix.stackexchange.com/ques...it-pages-in-pdf
Atención en:
mutool poster -y 2 input.pdf output.pdf
Saludos.
|
#10 Miercoles, 08 Agosto 2018, 17:00 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|