Pdf.js: pesquisar com ctrl + f não funciona com duas palavras

Criado em 17 mai. 2018  ·  4Comentários  ·  Fonte: mozilla/pdf.js

Anexe (recomendado) ou Link para o arquivo PDF aqui:
dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

Configuração:

  • Navegador da web e sua versão: Firefox 60 / Chromium 66
  • Sistema operacional e sua versão: Linux / Windows 7
  • Versão PDF.js: v1.10.88 ou v1.9.426 ou a versão integrada ao Firefox 60

Etapas para reproduzir o problema:

  1. Pressione ctrl + fe pesquise por "pioneiro de"
  2. Pioneer será destacado, mas assim que você digitar um espaço nenhum resultado será encontrado

pdftotext mostra o texto correto:

in nit ris hington 1D C
boerge W lacan a pioneer of butali
and an influential man aw at richfield last walk

Ele funciona no visualizador de PDF integrado do Chrome, portanto, não é um problema com o PDF.

Link para um visualizador (se hospedado em um site diferente de mozilla.github.io/pdf.js ou como extensão do Firefox / Chrome):
https://newspapers.lib.utah.edu/pdfjs1.9/web/viewer.html?file=/udn_files/de/e7/dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

4-text-selection

Comentários muito úteis

Eu adoraria trabalhar nisso,
@timvandermeij Por favor me ajude, por onde começar enquanto trabalho nesta questão

Todos 4 comentários

Eu adoraria trabalhar nisso,
@timvandermeij Por favor me ajude, por onde começar enquanto trabalho nesta questão

Eu sugiro que primeiro verifique o que temos na camada de texto, porque isso pode explicar por que a pesquisa não está funcionando. Meu palpite é que o fator de espaço não está correto; consulte: https://github.com/mozilla/pdf.js/blob/7bb066494f3f15c396941c3532b83da6d3465c6b/src/core/evaluator.js#L1303

Provavelmente, essa também é a causa de muitos outros problemas de seleção de texto aberto. No entanto, alterar o valor pode estar sujeito a erros para outros arquivos PDF e exigiria bons testes. Podemos precisar verificar como outros visualizadores de PDF de código aberto (como o Poppler) fazem isso, porque o problema é que a especificação do PDF não indica quando um espaço deve ser usado para seleção de texto. Ele apenas definiu a largura do espaçamento entre os caracteres.

Infelizmente https://github.com/mozilla/pdf.js/issues/9736#issuecomment -390629834 não ajudará aqui, já que este é um arquivo digitalizado onde cada palavra é posicionada individualmente com diferentes tamanhos de fonte e coordenadas x / y; veja, por exemplo, o início do fluxo /Contents :

1 G
1 g
1 0 0 1 52 1145.37 Tm
/F1 11 Tf
(UTAH)Tj
1 0 0 1 90 1146.36 Tm
/F1 11 Tf
(NEWS)Tj
1 0 0 1 29 1124.14 Tm
/F1 10 Tf
(the)Tj
1 0 0 1 44 1126.03 Tm
/F1 8 Tf
(oregon)Tj
1 0 0 1 71 1124.47 Tm
/F1 9 Tf
(short)Tj
1 0 0 1 92 1125.47 Tm
/F1 9 Tf
(line)Tj

...

Olá pessoal, tenho certeza que vocês sabem que outros projetos de renderização de PDF também sofrem com isso. Atualmente, estou usando um aplicativo da web (Nextcloud) que emprega pdf.js como um renderizador de PDF para seu aplicativo de navegador.

Aqui está um exemplo de um arquivo com o qual trabalhei em outros utilitários. Este é um trecho digitalizado de um manual de serviço do piloto automático de uma aeronave, impresso originalmente na década de 1970 em equipamento desconhecido.

CenturyIIB-origscan.pdf
CenturyIIB-tesseract_hocr-uncleaned.pdf
CenturyIIB-tesseract_hocr-cleaning.pdf

O primeiro arquivo é a digitalização original sem uma camada de texto. O segundo (hocr-não limpo) é um PDF / A que foi processado com Tesseract (v4.0) para criar uma camada de texto oculta. O terceiro (hocr-uncleaned) foi desalinhado com unpaper (v6.1) e então OCR com a mesma versão do Tesseract e saída como PDF / A também. Em ambos os casos de PDF / A, a digitalização original foi transcodificada para jpeg de 300 dpi para a saída final.

No segundo e no terceiro casos, a opção de renderização 'hocr' com Tesseract foi usada para o estágio de renderização OCR (Tesseract tem vários renderizadores internos). Se você der uma olhada no fórum de problemas do Tesseract no github, verá que eles fizeram algumas alterações em seu renderizador mais recente na tentativa de resolver esse problema também.

Aqui estão alguns trechos copiados / colados de vários utilitários ...

hocr-unlceaned no Safari 11.1 (13605.1.33.1.4)

The Century IIB Autopilot is an "Open Loop" system which responds only to the dynamics of the aircraft in flight, thus the only ground checks that can be accomplished are functional checks as described in this bulletin.

hocr-uncleaned no Chrome 66.0.3359.181

The Century IIB Autopilot is an "Open Loop" system which responds only to the dynamics of the aircraft in flight, thus the only ground checks that can be accomplished are functional checks as described in this bulletin.

hocr-uncleaned no Adobe Acrobat Pro X

The Century IIB Autopilot is an "Open Loop" system which responds only to the
dynamics of the aircraft in flight, thus the only ground checks that can be
accomplished are functional checks as described in this bulletin.

hocr-uncleaned em pdf.js (Firefox 60.0.1)

Century
IIB
Autopilot
is
an
"Open Loop"
system
which
responds
only
to
the
dynamics
of
the
aircraft
in
flight,
thus
the
only
ground
checks
that
can
be
accomplished
are
functional
checks
as
described
in
this
bulletin.

hocr limpo na mesma versão do Safari acima

The Century IIB Autopilot is an "Open Loop’ system which responds only to the dynamics of the aircraft in flight, thus the only ground checks that can be accomplished are functional checks as described in this bulletin.

hocr limpo na mesma versão do Chrome acima

The Century IIB Autopilot is an "Open Loop’ system which responds only to the
dynamics of the aircraft in flight, thus the only ground checks that can be
accomplished are functional checks as described in this bulletin. 

hocr limpo na mesma versão do Adobe Acrobat Pro acima

The Century IIB Autopilot is an "Open Loop’ system which responds only to the
dynamics of the aircraft in flight, thus the only ground checks that can be
accomplished are functional checks as described in this bulletin.

hocr limpo na mesma versão do pdf.js (Firefox) acima

Century 
IIB 
Autopilot 
is 
an 
"Open 
Loop’ 
system 
which 
responds 
only 
to 
the 
dynamics 
of 
the 
aircraft 
in 
flight, 
thus 
the 
only 
ground 
checks 
that 
can 
be 
accomplished 
are 
functional 
checks 
as 
described 
in 
this 
bulletin. 

Para qualquer um que queira reproduzir meu conjunto de ferramentas para outros arquivos de amostra ( main / _depedency _) ...

tesseract 4.00.00alpha (para OCR)
_leptonica 1.76.0
libjpeg-turbo 1.5.3
libpng 1.6.34 + apng
libtiff 4.0.9_

desbastar 6.1 (para de-skew, de-noise, etc)
_libav 12.1
opencv 2.4.13.1
freetype2 2.8_

qpdf 8.0.1 (para inspeção / modificação / criação de pdfs)
_ghostscript 9.16_

OCRmyPDF 6.2.0 (wrapper python v3 para os utilitários acima)

Todos os itens acima estão em virtualmente qualquer repositório de pacote Linux comum, OCRmyPDF está em fase e compilações modernas de todos eles estão no Homebrew para OSX também (tesseract deve ser marcado com seu git HEAD, pois a v4.0 ainda está marcada como beta) . Eu também executei todos eles no FreeBSD (é necessário compilar Tesseract, Leptonica e descompactar a partir do código-fonte). O Tesseract / Leptonica é uma ótima linha de base a ser usada para fazer esses arquivos de teste, na minha opinião. Eles trouxeram o OCR de código aberto adiante aos trancos e barrancos. Aqui está um exemplo de uma digitalização de um documento do século 18 no qual ele até faz um trabalho admirável, apesar de não saber o que são 'S's longos e transcrevê-los em' f's minúsculos.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jigskpatel picture jigskpatel  ·  3Comentários

kleins05 picture kleins05  ·  3Comentários

aaronshaf picture aaronshaf  ·  3Comentários

sujit-baniya picture sujit-baniya  ·  3Comentários

PeterNerlich picture PeterNerlich  ·  3Comentários