Pdf.js: la búsqueda con ctrl + f no funciona con dos palabras

Creado en 17 may. 2018  ·  4Comentarios  ·  Fuente: mozilla/pdf.js

Adjunte (recomendado) o enlace al archivo PDF aquí:
dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

Configuración:

  • Navegador web y su versión: Firefox 60 / Chromium 66
  • Sistema operativo y su versión: Linux / Windows 7
  • Versión PDF.js: v1.10.88 o v1.9.426 o la versión integrada en Firefox 60

Pasos para reproducir el problema:

  1. Presiona ctrl + f y busca "pioneer of"
  2. Pioneer se resaltará, pero tan pronto como escriba un espacio, no se encontrarán resultados

pdftotext muestra el texto correcto:

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

Funciona en el visor de PDF integrado de Chrome, por lo que no es un problema con el pdf.

Enlace a un visor (si está alojado en un sitio que no sea mozilla.github.io/pdf.js o como extensión de Firefox / Chrome):
https://newspapers.lib.utah.edu/pdfjs1.9/web/viewer.html?file=/udn_files/de/e7/dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

4-text-selection

Comentario más útil

Me encantaría trabajar en esto
@timvandermeij Por favor,

Todos 4 comentarios

Me encantaría trabajar en esto
@timvandermeij Por favor,

Sugeriría verificar primero lo que tenemos en la capa de texto porque eso puede explicar por qué la búsqueda no está funcionando. Supongo que el factor de espacio no es correcto; ver: https://github.com/mozilla/pdf.js/blob/7bb066494f3f15c396941c3532b83da6d3465c6b/src/core/evaluator.js#L1303

Es muy probable que esto también sea la causa de muchos otros problemas de selección de texto abierto. Sin embargo, cambiar el valor puede ser propenso a errores para otros archivos PDF y requeriría una buena prueba. Es posible que debamos comprobar cómo hacen esto otros visores de PDF de código abierto (como Poppler), porque el problema es que la especificación de PDF no indica cuándo se debe utilizar un espacio para la selección de texto. Solo definió el ancho de espaciado entre caracteres.

Desafortunadamente, https://github.com/mozilla/pdf.js/issues/9736#issuecomment -390629834 no ayudará aquí, ya que este es un archivo escaneado donde cada palabra se coloca individualmente con diferentes tamaños de fuente y coordenadas x / y; ver, por ejemplo, el comienzo de la secuencia /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

...

Hola chicos, estoy seguro de que saben que otros proyectos de renderizado de PDF también sufren de esto. Actualmente estoy usando una aplicación web (Nextcloud) que emplea pdf.js como un renderizador de PDF para su aplicación de navegador.

Aquí hay un ejemplo de un archivo con el que he trabajado en otras utilidades. Este es un extracto escaneado del manual de servicio del piloto automático de una aeronave, originalmente impreso en la década de 1970 en un equipo desconocido.

CenturyIIB-origscan.pdf
CenturyIIB-tesseract_hocr-uncleaned.pdf
CenturyIIB-tesseract_hocr-clean.pdf

El primer archivo es el escaneo original sin una capa de texto. El segundo (hocr-sin limpiar) es un PDF / A que se ha procesado con Tesseract (v4.0) para crear una capa de texto oculta. El tercero (hocr-uncleaned) se ha desviado con unpaper (v6.1) y luego se ha sometido a OCR con la misma versión de Tesseract y también se ha generado como PDF / A. En ambos casos de PDF / A, el escaneado original se ha transcodificado a 300 ppp jpeg para la salida final.

Tanto en el segundo como en el tercer caso, se utilizó la opción de renderizado 'hocr' con Tesseract para la etapa de renderizado de OCR (Tesseract tiene varios renderizadores internos). Si echas un vistazo al foro de problemas de Tesseract en github, verás que han realizado algunos cambios en su renderizador más reciente en un intento de abordar este problema también.

Aquí hay algunos extractos copiados / pegados de varias utilidades ...

hocr-unlceaned en 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-sin limpiar en 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-sin limpiar en 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 en 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-clean en la misma versión de Safari anterior

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-clean en la misma versión de Chrome anterior

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-clean en la misma versión de Adobe Acrobat Pro anterior

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 limpiado en la misma versión de pdf.js (Firefox) anterior

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 cualquiera que quiera reproducir mi cadena de herramientas para otros archivos de muestra ( 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_

unpaper 6.1 (para eliminar el sesgo, el ruido, etc.)
_libav 12.1
opencv 2.4.13.1
freetype2 2.8_

qpdf 8.0.1 (para inspección / modificación / creación de pdfs)
_ghostscript 9.16_

OCRmyPDF 6.2.0 (contenedor de python v3 para las utilidades anteriores)

Todo lo anterior está en prácticamente cualquier repositorio común de paquetes de Linux, OCRmyPDF está en pip, y las compilaciones modernas de todos ellos también están en Homebrew para OSX (tesseract debe estar etiquetado en su git HEAD ya que la v4.0 todavía está marcada como beta) . También los he ejecutado todos en FreeBSD (debo compilar Tesseract, Leptonica y unpaper de la fuente). Tesseract / Leptonica es una excelente línea de base para hacer tales archivos de prueba, en mi opinión. Han hecho avanzar el OCR de código abierto a pasos agigantados. Aquí hay un ejemplo de un escaneo de un documento del siglo XVIII en el que incluso hace un trabajo admirable, a pesar de no saber qué son las 'S largas y transcribirlas en' f minúsculas.

¿Fue útil esta página
0 / 5 - 0 calificaciones