Pesquisa Regex no leitor de PDF

Pesquisa Regex no leitor de PDF

Estou usando o zathura, pois gosto de sua abordagem minimalista, mas também mudaria para o mupdf ou qualquer outra coisa se isso resolvesse meu problema.

Preciso destacar cada palavra (em documentos PDF e epub) uma por uma, do início ao fim, porque posso me concentrar melhor no texto se houver algum tipo de movimento nele. Minha abordagem teria sido realizar uma pesquisa regex que correspondesse a cada palavra, mas nem o zathura nem o mupdf suportam regex nas pesquisas. Existe uma maneira de fazer isso?

Eu tentaria fazer um fork do zathura, mas para ser honesto, eu realmente não quero gastar tanto tempo se houver outro visualizador de documentos mínimo compatível com Gnu/Linux que faça o que eu preciso. E se houver alguma maneira de usar ferramentas de terminal, como  pdfgrep para destacar os resultados no zathura, isso também funcionaria.

Responder1

Seleção de texto básico

De acordo comPágina da Wikipédia de Zathura:

Zathura pode pesquisar texto e copiar texto para a seleção X primária

Isso implica que a capacidade de selecionar texto enquanto você lê está incorporada, embora provavelmente exija o mouse (será difícil encontrar uma solução para a seleção controlada pelo teclado).

Quão minimalista você precisa? eu usoAtril, um garfo ligeiramente mais leve deEvidência(o visualizador de documentos GNOME). Atril foi feito como parte doÁrea de trabalho MATE(uma continuação do GNOME 2). É bem leve, embora ainda tenha uma dependência do GTK+.

Outra opção éXpdfaplicativo. Veja tambémLista de softwares PDF da Wikipedia § Linux e Unix.

Regex

A única implementação de pesquisa regex (utilizável) que conheço, além de ferramentas de linha de comando comopdfgrep, é na verdade o seu navegador da web. Isso não é tão utilizável, mas aqui está uma solução no Firefox: Abra um PDF no Firefox e abra o console Javascript das ferramentas do desenvolvedor (F12 ou Ctrl + Shift + K). Execute estes comandos:

» pdf = document.getElementById("viewer").innerText.replace(/[ \t]+/g, " ");
» function grep(what, context=100) { return pdf.match(RegExp(`[\\s\\S]{0,${context}}${what}[\\s\\S]{0,${context}}`), "img"); }
» grep("put your regex here")
» grep("get more context", 300)

Observe que você terá que escapar das barras invertidas. O grepcomando possui um segundo argumento opcional, o número de caracteres de contexto a serem fornecidos em cada lado (padrão=100).

O Chrome e outros navegadores com visualizadores de PDF integrados devem ser bastante semelhantes, mas você terá que descobrir qual objeto HTML contém o conteúdo real do PDF (é o id="viewer"elemento do Firefox, não tenho certeza sobre os outros - na pior das hipóteses, apenas use document.bodyem vez de document.getElementById("viewer"). Você pode combinar itens no índice.)

Responder2

Se não me engano Adobe Acrobat Readertem uma função chamada read out loudque seleciona cada palavra do início ao fim.

informação relacionada