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):
*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.
Te sugiero que realices los siguientes pasos:
PDF → Word → HTML → MediaWiki
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).
Puede usar Pandoc para realizar la conversión de DOCX a HTML:
pandoc -i file.docx -s -o file.html
El -s
interruptor (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.
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
Probé este método con el documento Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice . El PDF original se ve así:
El archivo HTML (después de los primeros dos pasos) es bastante bueno:
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''"'' Paul Zimmermann''†''
</blockquote>
== ''∗'' INRIA Paris-Rocquencourt ''†'' INRIA Nancy-Grand Est, CNRS, and Université de Lorraine ==
<blockquote>''"'' 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.
pdfsam
para dividir los archivos PDF en partes de 100-200 páginas?pdttohtml
comando 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.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.
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 pandoc
podría funcionar bien.
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:
sudo mkdir dirname
.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 -h
para comprender mejor los parámetros disponibles.
He explicado los parámetros usados aquí para entender el comando:
-s
contiene toda la salida dentro de un documento HTML (excluyendo el esquema.-p
intenta reemplazar los enlaces internos de pdf con enlaces html.-fmt
controla el formato de salida de las imágenes, con png
y jpg
siendo opciones válidas.-nodrm
Restricciones de gestión de derechos de descarga de igores en el PDF.-i
ignora las imágenes. No usé esto, pero me pareció prudente mencionarlo, ya que en algunos casos puede acelerar enormemente su formato de salida.pdftotext
Poppler también tiene un pdftotext
mando. 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.
(¡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.
-f
El formato de entrada del archivo.-t
El formato del archivo de salida.-s
Standalone agrega un encabezado y pie de página al documento, en lugar de producir un fragmento de documento.-o
El 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í .
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 --guess
opción de que ftfy adivine su codificación, o --encoding
si conoce su codificación. Esto puede producir mejores resultados.
izzy
dluxcru
izzy
izzy
dluxcru
dluxcru
dluxcru
dluxcru
dluxcru