¿Es posible eliminar las ligaduras del texto copiado?

10

Tengo algunos archivos PDF que contienen ligaduras en el texto (por ejemplo, ffse combinan en un solo carácter ).

¿Hay alguna manera fácil de eliminarlos al copiar el texto del PDF? (es decir, cuando pego, me gustaría que se pegue como ff).

Copio una gran cantidad de texto de estos archivos PDF en las respuestas en Stack Overflow y encuentro las ligaduras en el mejor de los casos desagradables (ok, lo admito, soy muy exigente :-P); las ligaduras tampoco se muestran correctamente cuando se copian en otros lugares (por ejemplo, si las copio en el Bloc de notas, se muestran como bloques).

No puedo modificar los PDF.

Utilizo Adobe Acrobat Reader y Foxit Reader, pero estaría dispuesto a probar un nuevo lector de PDF.

James McNellis
fuente

Respuestas:

3

En python esto sería:

import unicodedata
# \uFB00 is the ff ligature.
unicodedata.normalize('NFKD',u'\uFB00').encode('ascii','ignore')

Puede combinar esto con pyPdf para leer los archivos pdf.

SiggyF
fuente
2

La evidencia del lector parece decodificar las ligaduras cuando probé esto.

Por cierto. para documentos pdflatex puede usar esto en el preámbulo para mostrar ligaduras en el documento PDF pero copiar caracteres individuales:

\ input {glyphtounicode.tex}
\ pdfgentounicode = 1%
hasta
fuente
1

Una posibilidad sería utilizar su editor de texto favorito y simplemente reemplazarlos.

Otra forma sería escribir un script que utilice sed. ..pero eso sería * NIX-Systems solamente, me temo.

Poli
fuente
GnuWin32 y has sed en las ventanas.
mbq
@mbq: ¿También está incluido en eso? muy bien. Gracias.
Bobby
0

Respondí una pregunta similar con más profundidad: ¿por qué se corta el texto `fi` cuando copio de un PDF o imprimo un documento?

Puede reemplazar las palabras "rotas" en el texto copiado si tiene una asignación de palabras rotas a palabras originales. Escribí un script para generar este mapeo eliminando las ligaduras de las palabras y verificando si la palabra resultante es única. Para mi diccionario de palabras en inglés, 99.5% de todas las posibles palabras rotas son reemplazables, y el 92,3% de las palabras que contienen una secuencia de ligadura ( ff, fi, fl, ffi, o ffl) se puede recuperar. La diferencia entre estos dos porcentajes se debe al número sorprendentemente grande de palabras legítimas que se crean mediante la eliminación de los ligamentos de otras palabras legítimos (como butterfly --> buttery, fluffs --> us, y misfits --> mists).

Aquí hay un CSV de palabras "rotas" reemplazables garantizadas (y las palabras que solían ser): http://www.filedropper.com/brokenligaturewordfixes

Jan Van Bruggen
fuente
Es genial que estés ofreciendo el archivo. Sin embargo, de manera realista, nadie con sentido común descargaría un archivo desconocido (especialmente de un nuevo usuario). No lo tome como algo personal si el archivo no recibe mucho tráfico. No significa que sus esfuerzos no sean apreciados.
fijador1234
Si yo entiendo. Desearía que hubiera una manera simple de verificar enlaces como ese, o incluso simplemente para garantizar el tipo de archivo. ¡Gracias!
Jan Van Bruggen
0

Mi manera era simplemente copiar y pegar desde el PDF al bloc de notas (para eliminar cualquier formato) y luego desde el bloc de notas a Microsoft Word.

En Word, todas las ligaduras se cambian con otras fuentes de formato.

Utilizo buscar y reemplazar para cada uno de ellos (como ^ l para la interrupción de línea manual y ^ m para la interrupción de página manual, etc., puede encontrar todo fácilmente en línea) y lo reemplazo con la forma correcta.

En 4 o 5 pasos cubro todas las posibilidades con bastante rapidez. También es útil eliminar interrupciones de párrafo adicionales (^ P)

Gentili Giuliano
fuente