¿Convertir archivos PDF a wiki?

Estoy buscando convertir un conjunto muy desordenado* de archivos PDF de referencia a wikitexto. Idealmente, me gustaría hacer de este proceso una aplicación única y sencilla, pero entiendo que dicha herramienta puede no estar disponible. Es posible utilizar una serie de herramientas intermedias.

Es preferible que las herramientas intermedias cumplan con las siguientes especificaciones (las dos primeras son meramente preferencias y pueden descartarse en favor de la funcionalidad):

  • Convertir a HTML en lugar de Word
  • Tener una GUI en lugar de una línea de comandos.
  • Puede manejar un par de cientos de páginas de PDF.
  • Son de código abierto (aunque la "prueba gratuita" es aceptable).
  • MediaWiki es el formato de salida preferido, pero otros formatos serían aceptables dado que:
    • se puede alojar en la pila LAMP o es un SaaS-wiki gratuito
    • acceso de múltiples usuarios
    • la capacidad de hacer que la wiki sea privada

*Los archivos PDF en cuestión son difíciles de usar, ya que con frecuencia se refieren a páginas dentro de sí mismos y entre sí, sin enlaces internos. También usan un formato de dos columnas, que la mayoría de las herramientas de conversión a HTML/texto que he probado hasta ahora (Calibre/FoxItPDF) no parecen manejar: exportan el texto en la misma línea, o crean elementos de párrafo que alternan entre las dos columnas; podría ser posible transformar estos archivos de salida usando algo de jQuery, pero eso es mucho trabajo por poca ganancia.

Windows 10 o Linux (Ubuntu) se considerarían plataformas disponibles. Las aplicaciones web o Google Drive también son posibilidades.

¿En qué sistema operativo debe funcionar ese software? Me temo que puede ser feliz si obtiene el "texto limpio" de esos en cualquier formato. Puede que no sea posible tratar automáticamente con esas referencias (cruzadas) (especialmente cuando no son enlaces sino solo "menciones" como "ver p.48 en el documento titulado X"). Me sorprendería mucho si algún software pudiera manejar eso. correctamente, debe ser AI entonces :)
No esperaría manejar las menciones. Eso es algo de lo que nos ocuparemos manualmente, venga a tener el texto en un wiki; por ahora, no estamos buscando una IA. Windows 10 o Linux (Ubuntu) se considerarían plataformas disponibles. Las aplicaciones web o Google Drive también son posibilidades.
¡Gracias por la respuesta! Lo he integrado con tu pregunta para que sea más fácil de detectar. ¡Buena suerte, entonces! Si bien tuve un problema similar en el pasado, no encontré una buena solución en ese momento y terminé con mucho trabajo manual...
Me temo que lo mismo podría ser cierto aquí. Tenga en cuenta que lo de las dos columnas es el mayor problema para mí. Podría considerar escribir algo de Java solo para encargarme de eso de los archivos de texto. Si hago eso, intentaré compartirlo en GitHub para cualquiera que pueda beneficiarse aquí.
Ya he analizado muchas de esas preguntas: la última respuesta de la primera podría ser algo para probar más tarde esta noche. Poppler y MudrawPDF podrían probarse si alguien pudiera publicar instrucciones claras de instalación mientras miraba sus respectivos sitios y no parecía encontrar ninguno. También probé Calibre y las funciones de conversión de PDF de Word: terminé obteniendo el formato HTML mencionado anteriormente con párrafos de texto alternando entre las columnas, o un error que implicaba que el PDF era demasiado largo para que Word lo manejara. También puede valer la pena echarle un vistazo a Pandoc, parece que podría ir directamente al texto wiki.
Estoy un poco corto de tiempo para probarlo en este momento.
Una lectura más detallada de Pandoc muestra que puede manejar HTML/Word a wikitexto, y es probable que sea la solución a la segunda mitad del problema, pero no hay evidencia de que pueda convertir directamente desde PDF.
He hecho un buen progreso en la solución de este problema y publicaré una respuesta a esta pregunta tan pronto como pueda documentar mi flujo de trabajo por completo. Poppler y Pandoc han demostrado ser mis herramientas preferidas, pero tengo un error con Pandoc .

Respuestas (2)

Te sugiero que realices los siguientes pasos:

PDF → Word → HTML → MediaWiki

PDF a Word

Existen algunas herramientas en línea gratuitas que realizan la conversión con muy buena calidad. El que más me gusta es SmallPDF . Creo que este enfoque es mejor, en comparación con pdftotext, porque tiene buenas heurísticas para detectar encabezados y preservar el formato esencial (negrita, cursiva).

Palabra a HTML

Puede usar Pandoc para realizar la conversión de DOCX a HTML:

pandoc -i file.docx -s -o file.html

El -sinterruptor (independiente) es importante porque guardará la información de codificación en el archivo HTML. Si abre el archivo con un navegador web, querrá verlo correctamente.

Una advertencia que he notado durante la prueba es que Pandoc podría considerar los párrafos ligeramente sangrados <blockquote>. Tenga eso en cuenta al realizar sus conversiones. También es posible que desee comprobar el archivo HTML antes de realizar el paso final. Las fórmulas probablemente se romperán.

HTML a MediaWiki

También puede hacer este paso usando Pandoc. Teóricamente, el paso de HTML puede no ser necesario, sin embargo, en mi humilde opinión, es útil verificar que todo esté bien usando un navegador para obtener una vista previa rápida.

pandoc -i file.html -t mediawiki -o file.wiki.txt

Ejemplo

Probé este método con el documento Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice . El PDF original se ve así:

PDF originales

El archivo HTML (después de los primeros dos pasos) es bastante bueno:

salida html

La sangría proviene de párrafos tratados como comillas. Creo que se puede solucionar modificando el archivo DOCX, si es necesario.

Finalmente, aquí hay un extracto del código de MediaWiki:

<blockquote>'''Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice'''

David Adrian''¶'' Karthikeyan Bhargavan''∗'' Zakir Durumeric''¶'' Pierrick Gaudry''†'' Matthew Green''§''

J. Alex Halderman''¶'' Nadia Heninger''‡'' Drew Springall''¶'' Emmanuel Thomé''†'' Luke Valenta''‡'' Benjamin VanderSloot''¶'' Eric Wustrow''¶'' Santiago Zanella-Béguelin''&quot;'' Paul Zimmermann''†''
</blockquote>
== ''∗'' INRIA Paris-Rocquencourt ''†'' INRIA Nancy-Grand Est, CNRS, and Université de Lorraine ==

<blockquote>''&quot;'' Microsoft Research ''‡'' University of Pennsylvania ''§'' Johns Hopkins ''¶'' University of Michigan

For additional materials and contact information, visit [https://weakdh.org/ WeakDH.org.]

'''ABSTRACT'''

We investigate the security of Diffie-Hellman key exchange as used in popular Internet protocols and find it to be less secure than widely believed. First, we present Logjam, a novel flaw in TLS that lets a man-in-the-middle downgrade connections to “export-grade” Diffie-Hellman. To carry out this attack, we implement the number field sieve discrete log algorithm. After a week-long precomputation for a specified 512-bit group, we can compute arbitrary discrete logs in that group in about a minute. We find that 82% of vulnerable servers use a single 512-bit group, allowing us to compromise connections to 7% of Alexa Top Million HTTPS sites. In response, major browsers are being changed to reject short groups.

We go on to consider Diffie-Hellman with 768- and 1024-bit groups. We estimate that even in the 1024-bit case, the com- putations are plausible given nation-state resources. A small number of fixed or standardized groups are used by millions of servers; performing precomputation for a single 1024-bit group would allow passive eavesdropping on 18% of popular HTTPS sites, and a second group would allow decryption of traffic to 66% of IPsec VPNs and 26% of SSH servers. A close reading of published NSA leaks shows that the agency’s attacks on VPNs are consistent with having achieved such a break. We conclude that moving to stronger key exchange methods should be a priority for the Internet community.
</blockquote>
= INTRODUCTION =

<blockquote>Diffie-Hellman key exchange is widely used to establish session keys in Internet protocols. It is the main key exchange mechanism in SSH and IPsec and a popular option in TLS. We examine how Diffie-Hellman is commonly implemented and deployed with these protocols and find that, in practice, it frequently offers less security than widely believed.
Tendré que probar esto y ver si obtenemos mejores resultados. Gracias por la sugerencia: si funciona mejor, puedo cambiar esto a la respuesta aceptada.
De nada. Al menos, me parece que esto es un poco más fácil ya que no manipulas las codificaciones. :) Si lo encuentra útil pero no está dispuesto a aceptarlo, puede considerar votarlo.
Parece que no puedo usar SmallPDF: excedo el tiempo máximo de conversión. Estoy lidiando con PDFS que se acercan, tal vez excedan las 1000 páginas, por lo que eso puede ser un obstáculo. ¿Conoces otros convertidores?
¿Podría tal vez usar pdfsampara dividir los archivos PDF en partes de 100-200 páginas?
Ver también Sejda para un sitio web con un límite de 200 páginas: sejda.com/pdf-to-word
¿Es pdfsam un programa de línea de comandos de algún tipo?
No realmente, en realidad es un programa GUI de código abierto. La interfaz es básica pero funciona bastante bien. Fue hecho por el mismo autor que creó Sejda recientemente. :) El nombre extendido es "PDF Split and Merge" y puede encontrarlo en los repositorios de cualquier distribución principal de Linux.
Puedo echarle un vistazo, pero descubrí que Poppler también tiene pdttohtmlcomando y funcionó bastante bien (formato conservado casi sin problemas; algunos problemas con la coloración y la fuente, pero en general TODO coincidía casi exactamente con PDF. Actualizaré mi respuesta con esta información, probablemente más tarde esta noche.
@DavidDale Lo usé a veces. Lo probé ahora con el PDF en mi respuesta, sin embargo, no intenta reconocer encabezados o subsecciones. Puede ser una buena opción, dependiendo de lo que necesites.
Verdadero. Con la conversión de PDF, a menudo probará una multitud de herramientas diferentes antes de encontrar algo que funcione.
Ha pasado un tiempo, pero actualicé mi respuesta si estás interesado en verla.

Después de experimentar un poco, se me ocurrió una solución de software múltiple en el shell de Linux. Conservó muy bien el formato en mis intentos, por lo que puedo decir que estoy satisfecho con los resultados de la conversión de HTML. La salida de mediawiki todavía puede necesitar algo de limpieza en ocasiones, pero en general obtuvimos un muy buen resultado.

Instalación de herramientas

Usaremos las siguientes herramientas de línea de comandos:

Estos se pueden instalar usando los siguientes comandos (Ubuntu Linux 14.04 asumido. Ajuste las instrucciones para su versión de Linux. Algunas de estas herramientas también pueden funcionar en Windows, pero no proporciono instrucciones de instalación o uso para ellas).

Para Poppler:sudo apt-get install poppler-utils

Para Pandoc: Guía de instalación

Pandoc recomienda específicamente descargar el .deb e instalarlo; sin embargo, si no le importa una versión anterior y está dispuesto a correr el riesgo de que se produzcan errores asociados con ella, sudo apt-get install pandocpodría funcionar bien.

Usando Poppler para extraer texto PDF como HTML

Poppler incluye una serie de herramientas de línea de comandos para extraer cosas como imágenes de PDF, y se detallan mejor aquí .

Pasos:

  1. Navegue hasta el directorio que contiene su(s) PDF(s) para la conversión.
  2. Cree un subdirectorio para los archivos de salida: sudo mkdir dirname.
  3. Ejecute el siguiente comando:

    sudo pdftohtml -s -p -fmt png -nodrm "file.pdf" "file/file.html"

Este comando creará muchos archivos, razón por la cual contenemos los resultados en su propio directorio. Extraerá las imágenes del archivo, por lo que todas se guardarán allí. También crea dos archivos HTML, uno de los cuales será un esquema y el otro contendrá todo el texto en un formato muy similar al original.

Puede escribir pdftohtml -hpara comprender mejor los parámetros disponibles.

He explicado los parámetros usados ​​aquí para entender el comando:

  • -scontiene toda la salida dentro de un documento HTML (excluyendo el esquema.
  • -pintenta reemplazar los enlaces internos de pdf con enlaces html.
  • -fmtcontrola el formato de salida de las imágenes, con pngy jpgsiendo opciones válidas.
  • -nodrmRestricciones de gestión de derechos de descarga de igores en el PDF.
  • -iignora las imágenes. No usé esto, pero me pareció prudente mencionarlo, ya que en algunos casos puede acelerar enormemente su formato de salida.

Método alternativo: Popplerpdftotext

Poppler también tiene un pdftotextmando. Esta fue la única herramienta que encontré hasta ahora que manejó bien la extracción de PDF en un caso de tener dos columnas de texto. Mientras que otras herramientas imprimían directamente de izquierda a derecha o alternaban líneas de texto de las dos columnas, Poppler juntó el texto en el orden correcto.

Ejecute el siguiente comando:

    pdftotext -htmlmeta "file.pdf" "file.html"

 Replace "file" with the name of the file you want to parse and with the name of the HTML file you want to write your text output to. 
 The `-htmlmeta` option creates an HTML version of the text in your PDF. (This is much less fancy than the previous command and only puts the text in `pre` tags). You should see an HTML file in your directory which you can open to check the results of. Depending on the formatting of your source PDF file, you may find that Poppler is variable in it's effectiveness. You can try running `pdftotext -h` for information on other command options that may improve or worsen your results. 

Usando Pandoc para convertir HTML a MediaWiki

(¡o casi cualquier otro formato!) Pandoc es un programa de línea de comandos muy útil que convierte un archivo de entrada en casi cualquier formato a casi cualquier formato de salida diferente. Permaneciendo dentro del mismo directorio, simplemente ejecute el siguiente comando:

 pandoc file.html -f html -t mediawiki -s -o file.txt

Este comando simplemente toma el archivo HTML y lo escribe en formato MediaWiki equivalente a un archivo txt. He proporcionado un desglose de los parámetros para el uso básico en caso de que necesite convertir a otro formato.

  • -fEl formato de entrada del archivo.
  • -tEl formato del archivo de salida.
  • -sStandalone agrega un encabezado y pie de página al documento, en lugar de producir un fragmento de documento.
  • -oEl nombre del archivo de salida.

Para obtener más información sobre Pandoc, lea la guía del usuario .

Es posible que te encuentres con un error con Pandoc, presumiblemente debido a que tu archivo es demasiado grande. Me encontré con este error y algunas correcciones se pueden encontrar aquí .

Opcional: Limpiar la codificación deficiente

Dependiendo de la codificación de su PDF, puede encontrar caracteres Unicode extraños en su salida HTML. Este paso está destinado a limpiar esta salida al mejor grado posible de precisión. ftfy , significa texto fijo para ti , y es una biblioteca de Python con una interfaz de línea de comandos. Usaremos la línea de comando para limpiar nuestros archivos. Este paso se realiza antes de usar Pandoc.

Para instalar ftfy:

git clone https://github.com/LuminosoInsight/python-ftfy.git
cd python-ftfy
sudo python setup.py install

O, si su sistema tiene pip, pip install ftfy. Tenga en cuenta que si desea usar una versión de 5.0 (la más reciente disponible al momento de escribir este artículo) o posterior, necesita Python 3. Usé Python 2.x con ftfy 4.1.1 para esta respuesta. Utilizando el mismo directorio, escriba el siguiente comando:

 ftfy -o file_clean.html --preserve-entities file.html

Opcionalmente, puede incluir la --guessopción de que ftfy adivine su codificación, o --encodingsi conoce su codificación. Esto puede producir mejores resultados.