Obtenga texto negro sobre fondo blanco listo para imprimir en archivos PDF escaneados (elimine el fondo en escala de grises o en color)

Obtenga texto negro sobre fondo blanco listo para imprimir en archivos PDF escaneados (elimine el fondo en escala de grises o en color)

¿Cómo puedo convertir fotografías de documentos en papel en un documento escaneado?está relacionado, pero no es lo mismo, ya que estoy hablando de archivos pdf. El procesamiento de imágenes parece complicado en las respuestas a la pregunta vinculada, especialmente porque implicaprocesar cada imagen por separado: dadomi pdf tiene cientos de paginas, la solución que espero no es la de procesar/editar imágenes, sino simplementeescanear fotografías y documentos digitales como lo son los reales. Me refiero a algo así como un "escáner virtual" para el cual la entrada sería un pdf basado en fotografías o una colección de fotografías y la salida sería un documento escaneado "normal". (También elScantailorherramienta recomendada - tambiénaquí- parece que ahora falta una versión de Linux.)


Esto esnosobre OCR ynosobre convertir imagen a texto.

Para aclarar lo que quiero decir, publicaré algunos ejemplos.

Hayarchivos pdf basados ​​en texto, no imagen, y son archivos de texto (digamos docx u odt) exportados a pdf. Parecen listos para imprimir:

ingrese la descripción de la imagen aquí

Lo anterior esnolo que hablo aquí.

Lo que me interesa son los archivos PDF de las imágenes siguientes, es decir, la diferencia entre las páginas de texto escaneadas que se parecen demasiado a las imágenes y las páginas de texto escaneadas que parecen texto digitalizado.

Los primeros están formados por imágenes que parecenfotos tomadasde páginas de libros:

ingrese la descripción de la imagen aquí

o

ingrese la descripción de la imagen aquí

tales copiasdifícilmente se puede reimprimir en papel, ya que el fondo también se imprimirá.

Los segundos son los que uno esperaría deescaneadotexto y se puede imprimir:

ingrese la descripción de la imagen aquí

o

ingrese la descripción de la imagen aquí

Es posible que el pdf con apariencia de imagen ya esté procesado por OCR y se pueda realizar búsquedas en su texto, y aún parezca una colección de fotos (de páginas): el OCR no es el problema aquí.

Lo que quiero es el aspecto claro en blanco y negro del PDF "escaneado" y la eliminación de todos los detalles "reales" (especialmente las sombras) que son normales en una fotografía pero que deberían estar ausentes en una página impresa.


Como @vanadium notó en un comentario, estoybuscando una solución de software que limpie automáticamente las imágenes de un documento, muy parecida a Google Scan en un teléfono inteligente.

Como dijo @user535733 en un comentario, el problema aquí parece ser, al menos hasta cierto punto, el de convertir elescala de grises(escaneado/imagen) textoa blanco y negro.

Respuesta1

scantailorYa no se mantiene, pero aún puedes compilarlo desde la fuente y usarlo.

sin embargo, elrepositorio originalnecesita qt4, que no es fácilmente instalable en versiones recientes de Ubuntu. Puedes usar por ejemploeste tenedorque se ha adaptado a qt5.

Requisitos previos:

sudo apt install libjpeg-dev zlib1g-dev libpng-dev libtiff-dev libboost-dev libxrender-dev libboost-all-dev

Instalación:

git clone https://github.com/victl/scantailor
cd scantailor
cmake .
make
sudo make install

Descargo de responsabilidad: no conozco al responsable de esta bifurcación y no puedo decir nada sobre la seguridad de su versión.


Otra opciónsería para usarScantailor avanzado. Puedes instalarlo a través de snap...

sudo snap install scantailor-advanced

... opaquete plano.

... o víapapá.

sudo add-apt-repository ppa:alex-p/scantailor
sudo apt update
sudo apt install scantailor # or scantailor-advanced

Examen rápido:

ingrese la descripción de la imagen aquí

Respuesta2

Como solución directa en PDF (sin extracción manual de imágenes):

Usar ocrmypdfpara restaurar OCR (como se menciona al final delcomplementarioparte de esta respuesta) He notado que ocrmypdf -hmuestra una opción que sonaba exactamente como lo que se pregunta:

--remove-background Attempt to remove background from gray or color pages, setting it to white

El pdf inicial ya tenía OCR, lo que da un error a menos que se utilice una de las siguientes opciones:

-f, --force-ocr Rasterize any text or vector objects on each page, apply OCR, and save the rastered output (this rewrites the PDF)

o

-s, --skip-text Skip OCR on any pages that already contain text, but include the page in final output; useful for PDFs that contain a mix of images, text pages, and/or previously OCRed pages

Aplicar cada uno por separado a uno de mis archivos grandes con cientos de páginas que ya tenían OCR bloqueó el proceso.

La mejor solucionme parece primeroimprimir en pdfel archivo inicial (que elimina el OCR) y luego haga

ocrmypdf input.pdf output.pdf -l <LANG> --remove-background -v

Para inglés, la -lopción no es necesaria. -ves para detalles detallados en la terminal.

El pdf resultante es más grande que el de entrada (debido a la --remove-backgroundopción): reduzca el tamaño como se indica a continuación.


Acerca de Scan Tailor, como complemento alrespuesta principal

Incluso su icono ilustra el hecho de que está destinado exactamente a lo que se pregunta aquí:

![ingrese la descripción de la imagen aquí

A continuación se explica cómo utilizar Scan Tailor con archivos PDF:

  1. Extraiga todas las páginas pdf como archivos de imagen- porque esta herramienta no procesa PDF directamente y necesita imágenes. Master PDF Editor puede hacer esto, pero en mi máquina falla después de extraer unas 80 imágenes. Pero aún se puede utilizar configurando un nuevo lote/rango de páginas para extraer. (PDF Mod falló antes de cualquier procesamiento). Lo que prefiero después de algunas pruebas es un método CLI confiable, aunque más lento, con un comando como: pdftoppm MY_PDF.pdf NAME -tiff- como se dijoaquí. — Se pueden usar otras variables en lugar de tiff(lo que proporciona tifarchivos), por ejemplo pngo jpeg. Vea aquí un conjunto de acciones del menú del servicio Dolphin para las distintas opciones de extracción:
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=pdf;tif;jpeg;
X-KDE-Submenu=PDF action: EXTRACT ALL pages
Icon=application-pdf

[Desktop Action pdf]
Name=Extract pages as pdf
Icon=application-pdf
Exec=bash -c 'pdf=$(pdftk "%u" burst); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';

[Desktop Action tif]
Name=Extract pages as tif
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -tiff); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';


[Desktop Action jpeg]
Name=Extract pages as jpeg
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -jpeg); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
  1. Cargue y procese las imágenes resultantes en Scan Tailor. Coloque los archivos de imagen resultantes en una carpeta separada y agregue esa carpeta en Nuevo proyecto>Directorio de entrada en Scan Tailor. (he instalado ese programade APP, como se dice en un comentario de @ N0rbert debajo de la respuesta principal). Algunas páginas que contienen imágenes reales y no texto podrían verse mejor sipara cada uno de ellosestá seleccionado "Escala de grises y color" en lugar del valor predeterminado "Blanco y negro" (aquí destinado al texto). Ejecute uno por uno los procedimientos enumerados. Verifique las páginas antes de ejecutar la última ("Salida").

ingrese la descripción de la imagen aquí

  1. Crea un nuevo pdf a partir de las imágenes resultantes.. (Primero verifique que los tifarchivos resultantes sean como los desea). Hay muchas formas de crear un nuevo PDF. Nuevamente, las herramientas GUI que probé muy pronto fallaron o dieron resultados extraños, por lo que prefiero colocar los tifarchivos resultantes en una carpeta separada y allí ejecutar el comando img2pdf *.tif -o out.pdf, como se dijo.aquí. (Esto puede necesitar un nombre/numeración adecuado de los archivos. Más sobre esoaquí.)

El pdf "a medida" resultante será más pequeño que el inicial, pero el porcentaje de reducción de tamaño varía dependiendo de factores que ignoro (pero imagino que las páginas contenidas en el pdf inicial deberían extraerse -en el paso 1- en el formato que ya tienen; creo jpegque tifdeberían usarse en lugar de png; usarlo pdfimages -list your.pdfen la terminal para ver detalles sobre el formato, ppp y otros detalles antes de procesar con los comandos anteriores y siguientes).

El pdf final se puede reducir aún más con un comando como:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

Más detalles sobre eso,aquí.

Aquí hay un conjunto de acciones del menú del servicio Dolphin basadas en el enlace anterior:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=shrink;shrink0;shrink1;shrink2;
X-KDE-Submenu=PDF action: SHRINK
Icon=application-pdf

[Desktop Action shrink]
Name=Shrink pdf to "printer" size, 300dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer    -sOutputFile="${f%.pdf}_printer.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';

[Desktop Action shrink0]
Name=Shrink pdf to "prepress" size, 300dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress    -sOutputFile="${f%.pdf}_prepress.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';


[Desktop Action shrink1]
Name=Shrink pdf to "ebook size, 150dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook    -sOutputFile="${f%.pdf}_small.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';

[Desktop Action shrink2]
Name=Shrink pdf to "screen" size, 72dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/screen    -sOutputFile="${f%.pdf}_smaller.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';

Recibí ayuda deesteresponde también.


Se pierde el OCR (capacidad de copia y búsqueda de texto)durante el procedimiento anterior, si está presente en el pdf inicial. Para obtener OCR, utilice ocrmypdf input.pdf output.pdf para ingles, como dijoaquí. Para otros idiomas, búscalos con apt-cache search tesseract-ocre instálalos. Agregue -l <LANG>al final del comando para idiomas específicos; másaquí; ver sus nombres tambiénaquí.

Aquí hay una acción del menú del servicio Dolphin para OCR rumano con dos opciones (una con progreso en la terminal y nombre de salida fijo, la otra con proceso en segundo plano pero con nombre de salida basado en la entrada; me gustaría tener tanto el proceso en la terminal como el nombre de salida basado en la entrada pero no sé cómo; si alguien puede hacerlo, publíquelo aquí). Para inglés, reemplace "rumano" y elimine la -l ronvariable:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=ocr1;ocr2;
X-KDE-Submenu=PDF action: apply OCR
Icon=application-pdf

[Desktop Action ocr1]
Name=Apply OCR Romanian (see progress in terminal; output name: ocr_ro.pdf!)
Icon=application-pdf
Exec=konsole --noclose -e ocrmypdf "%u" ocr_ro.pdf -l ron

[Desktop Action ocr2]
Name=Apply OCR Romanian (backgroud process: NO terminal! input>output name)
Icon=application-pdf
Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf" -l ron;'

(Extraer y procesar imágenes, así como 'imprimir como pdf' elimina el OCR, pero reduce el tamaño con ghostscript como se indica arribano es, por lo que la "reducción" se puede aplicar antes o después del OCR).

Respuesta3

Obtuve un resultado bastante bueno usando imageMagick y el siguiente scripthttp://www.fmwconcepts.com/imagemagick/shadowhighlight/index.php

Aquí está el resultado usando los siguientes parámetros:

./shadowhighlight -ma 100 -sa 100 -ha 00 -hw 0 -bc 20 inputFile.png OutputFile.png

ingrese la descripción de la imagen aquí

Respuesta4

Simplemente instale Gimp (preferiblemente use appimage). Las siguientes son las opciones:

  1. Seleccione Color>Umbral vendido y listo, su imagen será en blanco y negro. para esto tienes que hacerlo para cada pagina

Segunda opción 2) Seleccione Imagen>Modo>Indexado>Usar paleta de 1 bit en blanco y negro

Cualquier número de páginas que pueda tener su pdf, esto convertirá todo a 1 bit en blanco y negro.

Editar el 11/02/2021: Según consulta planteada porcipírico

Estos son los pasos que sigo:

  1. Escanee páginas con "escaneo simple" o Xsane. (Descubrí que el escaneo simple funciona mejor en color) O use el PDF escaneado ya disponible.
  2. Archivo>abrir O arrastrar y soltar el archivo pdf en GIMP. Aquí debe proporcionar el ancho X el alto de la imagen que necesita. (Compruebe qué ppp necesita: 150 ppp o 300 ppp y proporcione el valor del ancho en consecuencia)
  3. Ahora el archivo pdf con más de 1 página se abre como capas.
  4. Vaya a Imagen>Modo>Indexado>Usar paleta de 1 bit en blanco y negro
  5. Ahora exporto el pdf usando Archivo> "Exportar como"
  6. Compruebe si cada página del pdf exportado cumple con los requisitos. De lo contrario, proceso individualmente cada página defectuosa con el siguiente método: a) Seleccione Imagen> Modo> Escala de grises b) (Si hay demasiado gris/ruido en la página) Seleccione Color> Exposición y ajuste según sea necesario. c) Seleccione Color> Umbral y listo, su imagen será en blanco y negro. Para ello debe hacerlo en cada página defectuosa para que coincida con la calidad requerida. d) Ahora inserto esta página editada en esta capa de capas del archivo pdf original y elimino la capa de página defectuosa. y Exportar pdf nuevamente. Espero que esto ayude.

información relacionada