‘TextSnatcher’: copiar texto de imagens no desktop Linux
(github.com/RajSolai)- O TextSnatcher é um app de OCR para copiar rapidamente texto de imagens no Linux, permitindo arrastar uma imagem para realizar o reconhecimento de caracteres e colar o resultado
- Os recursos principais são suporte a vários idiomas, cópia de texto de imagens, arrastar sobre qualquer imagem e depois colar, além de uso rápido e fácil
- Para reconhecimento de caracteres, usa o Tesseract OCR 4.x e também fornece links para a documentação do Tesseract e para o projeto Tesseract
- A distribuição é feita via Flathub e AppCenter do elementary OS, e para compilar manualmente usa um processo de instalação baseado em Meson e Ninja
- Para executar, são necessários scrot, tesseract-ocr e os dados de idioma do Tesseract; o projeto informa que voltará no próximo mês com atualizações e correções
O que o TextSnatcher faz
- O TextSnatcher é um app para Linux que copia texto de imagens e realiza tarefas de OCR em poucos segundos
- O usuário pode arrastar sobre a imagem para copiar o texto e colá-lo
- Recursos oferecidos:
-
Suporte a vários idiomas
- Copiar texto de imagens arrastando
- Arrastar sobre qualquer imagem e depois colar
- Uso rápido e fácil
-
Motor de OCR e projetos relacionados
- O TextSnatcher usa Tesseract OCR 4.x para reconhecimento de caracteres
- Como materiais relacionados, indica a documentação do Tesseract e o Tesseract-Project
Instalação e canais de distribuição
Dependências e build
- Dependências de runtime necessárias para executar:
- scrot
- tesseract-ocr
- Dados de idioma do Tesseract
- São fornecidos links para os repositórios do Arch e do Debian
- Dependências de build necessárias para compilar:
- granite
- gtk+-3.0
- gobject-2.0
- gdk-pixbuf-2.0
- libhandy-1
- libportal-0.5
- Para compilar e executar manualmente, o fluxo é clonar o repositório, criar um diretório de build com Meson, instalar com Ninja e então executar
com.github.rajsolai.textsnatcher
Estado de desenvolvimento e origem
- O projeto inclui um selo indicando que foi feito em Vala
- No README, está escrito que no momento estão arrecadando fundos para comprar um PC Linux e que o projeto deve voltar no próximo mês com atualizações e correções
- As inspirações citadas são o README do Planner, a estrutura de aplicação do Develop e o app macOS TextSniper
1 comentários
Comentários do Hacker News
Uso um script como o do Dibby053, peguei no Stack Overflow, fiz alguns ajustes para funcionar em KDE/GNOME e Wayland/X11, e para mostrar o estado atual em uma notificação
Ainda não testei pessoalmente a detecção de X11/Wayland, mas fiquem à vontade para usar e dizer como foi
spectacleem modo de segundo planoA ideia é encadear
grim,slurp,mogrify,tesseractewl-copy, escolhendo o idioma do OCR comfuzzelEscolhe-se o idioma com
dmenue processa-se com algo comomaim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -bihttps://news.ycombinator.com/item?id=33704483#33705272
trap "cleanup '$SCR_IMG'" EXIT, mas neste caso a observação não está totalmente erradaO comando passado para
trapnormalmente é avaliado, então ocorre expansão de variável, etrap 'cleanup "$SCR_IMG"' EXITfunciona de forma mais seguraEm Bash mais recente,
trap "cleanup ${SCR_IMG@Q}" EXITtambém é uma opçãobash -c 'flameshot gui -s -r | tesseract - - | gxmessage -title "Decoded Data" -fn "Consolas 12" -wrap -geometry 640x480 -file -'Aperto Super+O, arrasto a área para OCR, e o texto capturado aparece imediatamente em uma janela pop-up
Há algum tempo, um script que copiei de algum lugar fazia isso muito bem
Ele capturava uma área com
scrot, fazia pré-processamento commogrifyem preto e branco e ampliação, depois extraía o texto comtesseract, colocava no clipboard comxsele ainda mostrava uma notificaçãoscrotPor causa da opção
--nodrag, ao selecionar uma área com trackpad basta clicar uma vez, mover o cursor e clicar de novo, o que é mais confortávelEm
maim -s --nodrag --quality=10 $IMG.png, o10corresponde ao100doscrotTambém não senti grande diferença com o pré-processamento por ampliação, e não sei bem que tipo de pré-processamento melhoraria isso
Fico curioso se o TextSnatcher melhora algo em relação a isso, mas a página no GitHub não é muito clara
Meus pêsames aos colegas que vivem entre Unix e Windows
trap "rm $IMG*" EXIT, vale a pena consultar https://www.shellcheck.net/wiki/SC2064É melhor usar
mktemp -de excluir o diretório de forma recursivaVincular um script a um atalho de teclado é muito melhor do que ter que clicar em uma janela com botão
Para os colegas plebeus que usam Windows: esse recurso também existe no complemento oficial Microsoft PowerToys
Ele também foi adicionado à ferramenta padrão de captura de tela, mas pessoalmente acho o atalho único de teclado do PowerToys mais prático
https://github.com/microsoft/PowerToys
Basta pressionar WIN+SHIFT+S; se o ícone “Text actions” não aparecer, atualize para a versão mais recente pela Windows Store
Faz tempo que me pergunto se o Tesseract é mesmo a solução mais moderna e de ponta nessa área
Na prática ele me parece bem limitado, e já por volta de 2019 eu sentia que, com o avanço da visão computacional, reconhecimento de texto deveria ser basicamente um problema resolvido
Parece algo que já deveria funcionar melhor que humanos, mas nem mesmo scans de recibos em baixa resolução eram convertidos com precisão, especialmente fora do inglês
Posso simplesmente estar usando errado
Tenho curiosidade de saber exatamente como você está usando
Tenho visto o Tesseract ser mencionado com cada vez mais frequência
Quando testei em artigos científicos escaneados de 10 a 15 anos atrás, o resultado foi decepcionante, e o pós-processamento manual não era muito menos trabalhoso do que digitar tudo eu mesmo
Por isso, Tesseract virou para mim sinônimo de “não vale a pena tentar”, mas pode ter melhorado com o tempo, então talvez valha testar de novo
Para reconhecimento geral, incluindo fontes estranhas e imagens de baixa qualidade, EasyOCR me deu resultados muito melhores
Ele usa o Tesseract internamente e é realmente excelente
Há 15 anos era preciso fazer bastante pré-processamento para obter resultados menos ruins, mas hoje tenho conseguido bons resultados mesmo sem pré-processamento
Usei diretamente e funciona bem até.
Como é um app Flatpak, para funcionar completamente ele precisa do portal do desktop, mas na configuração existente do
xdg-desktop-portal-wlrfuncionou bem sem ajustes extras.Deve funcionar sem problemas em ambientes X11 ou Wayland com uma configuração do
xdg-desktop-portalque suporte a Screenshot API.Os resultados variam, mas não são ruins; com texto legível e limpo, há só problemas de espaço ou erros ocasionais, então pode ser útil para copiar texto de coisas como caixas de diálogo de erro.
Dito isso, no Linux em geral o texto das caixas de diálogo de erro já costuma ser selecionável, e a MessageBox padrão do Windows responde a Ctrl+C.
Estou usando um app parecido, o Frog, e tem funcionado muito bem.
https://getfrog.app
.deb, nem brew.No macOS existe um utilitário que faz mais do que abrir o documento no Preview e tentar selecionar o texto.
https://github.com/schappim/macOCR
Gosto do autor.
Depois é só apagar a imagem na lixeira no canto superior direito, e Cmd-A também funciona.
Um exemplo usado neste comentário está aqui: https://imgur.com/a/q0NvcS6
No iOS eu uso uma solução parecida com um Atalho vinculado ao Botão de Ação.
Em alguns apps, copiar texto não é fácil ou o texto está em outro idioma; então tiro uma captura de tela, extraio o texto, detecto automaticamente o idioma original, traduzo para o inglês e mostro o original e a tradução no Quick View para poder selecionar e copiar.
Você pode testar um exemplo de implementação aqui: https://www.icloud.com/shortcuts/f420d24e4960415da1a43f230abfce39
Aliás, nas versões mais recentes do iOS você também pode abrir uma foto no app Fotos e selecionar com o dedo o texto dentro da imagem para copiar.
Usei pelo botão de compartilhamento da imagem, na folha de compartilhamento, e funcionou, mas se a imagem já está sendo passada nesse momento, a etapa da captura de tela fica redundante.
Embora digam que é “para Linux Desktop”, isso é Flatpak, e nem toda distribuição Linux vem com Flatpak por padrão.
Pretendo testar uma vez em uma máquina virtual com Fedora; já vi muitas ferramentas desse tipo, e a maioria usa Tesseract.
Em imagens ásperas ou com muito ruído, ou quando as letras estão curvas ou inclinadas, ele falha bastante e não vai resolver CAPTCHA.
https://tesseract-ocr.github.io/tessdoc/Home.html
Mais exatamente, isso quer dizer que o autor não fez um pacote para a sua distribuição, e ninguém mais teve tempo ou vontade de empacotar.
O mantenedor que você está procurando pode ser você mesmo.
Se houvesse só
.deb, daria para dizer que não funciona fora de Ubuntu/Debian, e isso seria uma desvantagem bem maior.