Anexe (recomendado) ou Link para o arquivo PDF aqui:
dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf
Configuração:
Etapas para reproduzir o problema:
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
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.
Comentários muito úteis
Eu adoraria trabalhar nisso,
@timvandermeij Por favor me ajude, por onde começar enquanto trabalho nesta questão