TextSnatcher, para copiar texto desde imágenes en el escritorio Linux
(github.com/RajSolai)- TextSnatcher es una app de OCR para copiar rápidamente texto dentro de imágenes en Linux: permite arrastrar sobre una imagen para reconocer caracteres y pegar el resultado
- Sus funciones principales son soporte multilingüe, copiar texto desde imágenes, arrastrar sobre cualquier imagen y luego pegar, y una experiencia de uso rápida y sencilla
- Para el reconocimiento de caracteres usa Tesseract OCR 4.x, y proporciona enlaces a la documentación de Tesseract y al proyecto Tesseract
- La distribución se ofrece a través de Flathub y AppCenter de elementary OS; para compilarla directamente se usa un procedimiento de instalación basado en Meson y Ninja
- Para ejecutarla se requieren scrot, tesseract-ocr y datos de idioma de Tesseract; el proyecto informa que volverá el mes próximo con actualizaciones y correcciones
Qué hace TextSnatcher
- TextSnatcher es una app para Linux que copia texto desde imágenes y realiza tareas de OCR en cuestión de segundos
- El usuario puede arrastrar sobre una imagen para copiar y pegar texto
- Funciones disponibles:
-
Soporte multilingüe
- Copiar texto desde imágenes arrastrando
- Arrastrar sobre cualquier imagen y luego pegar
- Uso rápido y sencillo
-
Motor OCR y proyectos relacionados
- TextSnatcher usa Tesseract OCR 4.x para el reconocimiento de caracteres
- Como recursos relacionados, presenta la documentación de Tesseract y Tesseract-Project
Instalación y canales de distribución
- La app se puede obtener en Flathub
- Los usuarios de elementary OS pueden obtenerla mediante AppCenter
Dependencias y compilación
- Dependencias de runtime necesarias para ejecutarla:
- scrot
- tesseract-ocr
- Datos de idioma de Tesseract
- Se proporcionan enlaces a los repositorios de Arch y Debian
- Dependencias de build-time necesarias para compilar:
- granite
- gtk+-3.0
- gobject-2.0
- gdk-pixbuf-2.0
- libhandy-1
- libportal-0.5
- Para compilarla y ejecutarla directamente, el flujo consiste en clonar el repositorio, crear un directorio de build con Meson, instalar con Ninja y luego ejecutar
com.github.rajsolai.textsnatcher
Estado de desarrollo y fuentes
- El proyecto incluye una insignia que indica que fue creado con Vala
- El README dice que actualmente se están reuniendo fondos para comprar una PC Linux, y que el proyecto volverá pronto, el mes próximo, con actualizaciones y correcciones
- Las fuentes de inspiración citadas son el README de Planner, la estructura de aplicación de Develop y la app para macOS TextSniper
1 comentarios
Opiniones de Hacker News
Uso un script como el de Dibby053; lo tomé de Stack Overflow, lo modifiqué un poco para que funcione en KDE/GNOME y Wayland/X11, y para que muestre el estado actual mediante una notificación.
Todavía no probé personalmente la detección de X11/Wayland, pero estaría bien que lo prueben y cuenten los resultados.
spectacleen modo de segundo plano, de modo que no aparezca una ventana después de la captura.La idea es encadenar
grim,slurp,mogrify,tesseractywl-copy, y elegir el idioma del OCR confuzzel.Elijo el idioma con
dmenuy lo proceso con algo comomaim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -bi.https://news.ycombinator.com/item?id=33704483#33705272
trap "cleanup '$SCR_IMG'" EXIT, pero en este caso no está del todo equivocado.El comando pasado a
trapnormalmente se evalúa, por lo que se produce la expansión de variables, ytrap 'cleanup "$SCR_IMG"' EXITfunciona de forma más segura.Si usas una versión reciente de Bash,
trap "cleanup ${SCR_IMG@Q}" EXITtambién es una opción.bash -c 'flameshot gui -s -r | tesseract - - | gxmessage -title "Decoded Data" -fn "Consolas 12" -wrap -geometry 640x480 -file -'.Presiono Super+O, arrastro el área para hacer OCR y el texto capturado aparece de inmediato en un cuadro de diálogo emergente.
Un script que copié de algún lado hace tiempo hace esto bastante bien.
Captura un área con
scrot, hace preprocesamiento en blanco y negro y ampliación conmogrify, extrae el texto contesseract, lo coloca en el portapapeles conxsely además muestra una notificación.scrot.Gracias a la opción
--nodrag, al seleccionar un área con el trackpad basta con hacer clic una vez, mover el cursor y volver a hacer clic, lo que resulta más cómodo.En
maim -s --nodrag --quality=10 $IMG.png,10equivale a100enscrot.Tampoco noté gran diferencia con el preprocesamiento de ampliación, y no sé bien qué tipo de preprocesamiento lo mejoraría.
Me pregunto si TextSnatcher mejora algo respecto a esto, pero la página de GitHub no es clara.
Mis disculpas a los colegas que viven entre Unix y Windows.
trap "rm $IMG*" EXIT, conviene consultar https://www.shellcheck.net/wiki/SC2064.Es mejor usar
mktemp -dy eliminar el directorio de forma recursiva.Es mucho mejor vincular un script a un atajo de teclado que tener que hacer clic en una ventana con botones.
Para los colegas simples mortales que usan Windows: la extensión oficial Microsoft PowerToys también tiene esta función.
También se incorporó en la herramienta de captura predeterminada, pero personalmente me resulta más práctico el atajo de teclado único de PowerToys.
https://github.com/microsoft/PowerToys
Solo hay que presionar WIN+SHIFT+S; si no aparece el ícono de “Text actions”, actualízala a la versión más reciente desde Windows Store.
Me lo pregunto desde hace mucho: no sé si Tesseract es realmente la solución de punta en este campo.
En mi experiencia se siente bastante limitado, y ya hacia 2019, viendo los avances en visión por computadora, me parecía que el reconocimiento de texto debería ser un problema prácticamente resuelto.
Debería hacerlo mejor que una persona, pero ni siquiera lograba convertir con precisión escaneos de recibos de baja resolución, sobre todo si no estaban en inglés.
Tal vez soy yo quien no lo está usando bien.
Me da curiosidad saber exactamente cómo lo estás usando.
Veo que Tesseract se menciona cada vez más seguido.
Cuando lo probé hace 10 o 15 años con artículos científicos escaneados, los resultados fueron decepcionantes, y el posprocesamiento manual no era mucho menos trabajo que tipearlo directamente.
Por eso, para mí Tesseract se volvió sinónimo de “no vale la pena intentarlo”, pero quizá haya mejorado con el tiempo y valga la pena probarlo de nuevo.
Para reconocimiento general, incluyendo fuentes raras o mala calidad de imagen, EasyOCR me dio resultados mucho mejores.
Usa Tesseract internamente y es realmente excelente.
Hace 15 años había que hacer bastante preprocesamiento para obtener resultados menos malos, pero ahora obtengo buenos resultados incluso sin preprocesamiento.
Lo probé directamente y funciona bastante bien.
Como es una app Flatpak, necesita portales de escritorio para funcionar por completo, pero con mi configuración existente de
xdg-desktop-portal-wlrfuncionó bien sin ajustes adicionales.Parece que debería funcionar sin problemas en entornos X11 o Wayland que tengan una configuración de
xdg-desktop-portalcon soporte para la Screenshot API.Los resultados son irregulares, pero no están mal; con texto que se lee con claridad, solo hay problemas de espacios o algún error ocasional, así que puede ser útil para copiar texto de lugares como cuadros de diálogo de error.
Aunque en Linux, de entrada, es más común que el texto de los cuadros de diálogo de error sea seleccionable, y el MessageBox estándar de Windows responde a Ctrl+C.
Estoy usando Frog, una app similar, y me ha funcionado muy bien.
https://getfrog.app
.deb, ni brew.En macOS hay una utilidad que hace algo más que abrir un documento en Preview e intentar seleccionar texto.
https://github.com/schappim/macOCR
Me gusta el autor.
Después puedes borrar la imagen con el bote de basura de la esquina superior derecha, y Cmd-A también funciona.
El ejemplo que probé para este comentario está aquí: https://imgur.com/a/q0NvcS6
En iOS uso una solución parecida con un atajo conectado al botón de acción.
En algunas apps no es fácil copiar texto, o está en otro idioma; entonces toma una captura, extrae el texto, detecta automáticamente el idioma original y lo traduce al inglés, y muestra el original y la traducción en Quick View para poder seleccionarlos y copiarlos.
Puedes probar un ejemplo de implementación aquí: https://www.icloud.com/shortcuts/f420d24e4960415da1a43f230abfce39
Como referencia, en las versiones recientes de iOS también puedes abrir una foto en la app Fotos y seleccionar con el dedo el texto dentro de la imagen para copiarlo.
Lo probé presionando el botón de compartir en una imagen y luego usándolo desde la hoja de compartir, y funcionó; pero si ya le estás pasando una imagen, el paso de captura de pantalla es redundante.
Aunque dice “para Linux Desktop”, esto es Flatpak, y no todas las distribuciones de Linux traen Flatpak de forma predeterminada.
Pienso probarlo una vez en una máquina virtual con Fedora; he visto muchas herramientas de este tipo, y la mayoría usan Tesseract.
Fallan bastante con imágenes ásperas o con mucho ruido, o cuando las letras están deformadas o inclinadas, y no sirven para resolver CAPTCHA.
https://tesseract-ocr.github.io/tessdoc/Home.html
Más exactamente, significa que el autor no creó un paquete para tu distribución, y que nadie más tuvo el tiempo ni las ganas de empaquetarlo.
El mantenedor que buscas podrías ser tú.
Si solo hubiera un
.deb, podrías decir que no sirve fuera de Ubuntu/Debian, y eso sería una desventaja mucho mayor.