Alternativa ao Text Extractor do PowerToys do Windows

Alguém sabe um programa semelhante ao Text Extractor que vem no PowerToys do Windows?

Ele é basicamente um OCR que você extrai o texto de uma imagem, não é 100%, mas reduz muito o trabalho para não ter que digitar todo o texto/código/url.

Instale a GUI para o Tesseract: gimagereader

Ele extrai textos de imagens e arquivos PDF no Linux.

Você abre uma imagem nele e escolhe a língua na setinha da opção: Reconhecer seleção.

Seleciona o texto na imagem, depois ou clique em Reconhecer seleção Português (pt_BR) ou clique com o botão direito do mouse sobre a seleção e escolha “Reconhecer para área de transferência”, esse último deixa o texto na área de transferência, depois é só clicar em um editor de texto.


Obs: quando se instala o gimagereader ele só vem com a opção de lingua inglesa para converter, para ter outras opções de língua como português você precisa fazer uma busca com o nome tesseract e ver os pacotes de linguagem e instalar, assim vai aparecer mais linguas em: Reconhecer seleção.

1 curtida

Testei e parece que funciona de modo bem semelhante (mas teria que definir um atalho de teclado para funcionar legal)

1 curtida

Esse programinha NormCap funciona também, mas depois que clica no AppImage tem que clicar na engrenagem e escolher “Keep in system tray” e chamar ele a partir do tray, depois que seleciona o texto na imagem cola no editor de texto.

1 curtida

Não funcionou aqui. Quando ativo ele, a tela fica piscando, bugando os workspace tudo do Qtile.

OBS: Instalei pelo AUR.

Se você não tiver problemas com scripts, dá para instalar o tesseract e os pacotes de idiomas (o mesmo que vem com o gImageReader) e montar uma “pipeline” usando outra ferramenta de screenshot – nesse exemplo, o scrot --, o xclip (que maneja a área de transferência) e o notify-send (para gerar a notificação).

#!/usr/bin/env bash
set -eo pipefail
if TEXTO=$(scrot -s -o /dev/stdout | tesseract -l por - -); then
  printf '%s\n' "$TEXTO" | xclip -selection clipboard
  notify-send -a 'Text Grab de Taubaté' -- "${TEXTO:-vazio}"
fi

Sobre o problema de utilizar script, tranquilo comigo.

Instalei os pacotes que faltava no sistema:
tesseract-data-eng tesseract-data-por tesseract scrot

Xclip e Dunst ja tinha instalados no sistema.

Não entendi o funcionamento muito bem do script, porém quando executo ele exibe a seguinte mensagem de erro:

scrot: option --select: Unknown value for suboption 'o'
Error during processing.

Apesar do problema, tenho uma duvida em relação ao funcionamento do script. É para ser executado após usar o scrot para captura de imagem ou não tem nada haver? Pq se for, vai ser problema, porque os scripts que eu utilizo para captura utiliza o maim e não faço ideia como alterar eles para colocar o scrot.

https://www.vivaolinux.com.br/artigo/Extracttext-como-extrair-texto-de-uma-area-selecionada-da-tela/

1 curtida

Nada a ver, ele invoca o scrot por conta própria. O -o /dev/stdout é para que ele envie a imagem para a entrada do comando seguinte (em vez de um arquivo). O tesseract então reconhece o texto na imagem e o libera como saída, que é capturada na variável TEXTO.

Você mesmo pode adaptar o script para usar o maim e remover o scrot. Se eu tiver entendido o manual corretamente, será assim:

# Troque
if TEXTO=$(scrot -so /dev/stdout | tesseract -l por - -); then
# por
if TEXTO=$(maim -s | tesseract -l por - -); then

Eu tinha feito esse script há algum tempo e o adaptei para o Wayland depois que migrei para o Sway. Postei a versão que eu tinha feito para o Xorg mas não sabia que desde então o scrot atualizou e mudou como a opção -s funciona. Ajustei a resposta original.

Muito obrigado a @Capezotte e @aguamole pelas soluções oferecidas, ambas servem ao que estou procurando. Porém agora surgiu outro problema…rs Ambas oferecem extras que me agrada, queria acrescentar algo e customizar e aplicar em uma solução.

Extracttext - como extrair texto de uma área selecionada da tela [Artigo]

O extracttext oferece extras para remover linhas em branco dentre outras coisas, porém falta opção de notificar após capturar o texto, o que existe na versão do script do @Capezotte.

Queria acrescentar esta parte do código do @Capezotte ao extracttext:

printf '%s\n' "$TEXTO" | xclip -selection clipboard
  notify-send -a 'Text Grab de Taubaté' -- "${TEXTO:-vazio}"

Porém com a seguinte customização:

notify-send -i /usr/share/archcraft/icons/dunst/picture.png -t 5000 "Colocar o texto capturado aqui"
paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &

Como eu faço isso não sabendo programar? …rs

OBS:

#!/usr/bin/env bash
set -eo pipefail
if TEXTO=$(maim -s | tesseract -l por - -); then
  printf '%s\n' "$TEXTO" | xclip -selection clipboard
  notify-send -a 'Text Grab de Taubaté' -- "${TEXTO:-vazio}"
fi

Quando executo este script ele funciona, capturando e exibindo a notificação, porém exibe a saída no terminal:

./textgrab
Estimating resolution as 215

Acrescente o sed do extracttext como parte da linha com if no meu script:

#!/usr/bin/env bash
set -eo pipefail
if TEXTO=$(maim -s | tesseract -l por - - | sed '/^$/N;/^\n$/D'); then
  printf '%s\n' "$TEXTO" | xclip -selection clipboard
  notify-send -a 'Text Grab de Taubaté' -- "${TEXTO:-vazio}"
fi

Isso são detalhes da operação do tesseract (mais especificamente, ele chutando a resolução da imagem antes de soltar o texto). Nada que afete o funcionamento do script.

Já esta de olho neste programa antes, porém tinha salvo este link no meu pc e como estou em viagem com o notebook, não lembrava o nome dele :confused:

Mas agora com os scripts sugeridos no tópico, torna mais prático para mim que utiliza o Qtile configurar para executar ele via atalho.

Vou deixar uma sugestão mas não sei se é exatamente isso GitHub - biglinux/bigocrpdf

Após alterar algumas coisas no código do @Capezotte ficou assim o código final:

#!/usr/bin/env bash
set -eo pipefail
if TEXTO=$(maim -s | tesseract -l por - - | sed '/^$/N;/^\n$/D'); then
  printf '%s\n' "$TEXTO" | xclip -selection clipboard
  notify-send -i /usr/share/archcraft/icons/dunst/picture.png -t 5000 "${TEXTO:-vazio}"
  paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &
fi

Muito obrigado ao @Capezotte, @aguamole e a todos que deram sugestões.

Para quem for utilizar, é necessário os seguintes pacotes:

tesseract              # ocr
tesseract-data-por     # pacote para leitura de ocr em português
tesseract-data-eng     # pacote para leitura de ocr em inglês
maim                   # aplicativo para screenshot
xclip                  # aplicativo para gerenciar a area de transferencia
dunst                  # aplicativo para notificação

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.