Pdf.js: la recherche avec ctrl+f ne fonctionne pas avec deux mots

Créé le 17 mai 2018  ·  4Commentaires  ·  Source: mozilla/pdf.js

Joindre (recommandé) ou créer un lien vers le fichier PDF ici :
dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

Configuration:

  • Navigateur Web et sa version : Firefox 60/Chromium 66
  • Système d'exploitation et sa version : Linux/Windows 7
  • Version PDF.js : v1.10.88 ou v1.9.426 ou la version intégrée à Firefox 60

Étapes pour reproduire le problème :

  1. Appuyez sur ctrl+f et recherchez "pionnier de"
  2. Pioneer sera mis en surbrillance, mais dès que vous tapez un espace, aucun résultat n'est trouvé

pdftotext affiche le texte correct :

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

Cela fonctionne dans la visionneuse PDF intégrée de Chrome, ce n'est donc pas un problème avec le pdf.

Lien vers une visionneuse (si hébergé sur un site autre que mozilla.github.io/pdf.js ou en tant qu'extension Firefox/Chrome) :
https://newspapers.lib.utah.edu/pdfjs1.9/web/viewer.html?file=/udn_files/de/e7/dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

4-text-selection

Commentaire le plus utile

j'adorerais travailler dessus,
@timvandermeij S'il vous plaît aidez-moi, par où commencer tout en travaillant sur ce problème

Tous les 4 commentaires

j'adorerais travailler dessus,
@timvandermeij S'il vous plaît aidez-moi, par où commencer tout en travaillant sur ce problème

Je suggérerais de vérifier d'abord ce que nous avons dans la couche de texte, car cela peut expliquer pourquoi la recherche ne fonctionne pas. Je suppose que le facteur d'espace n'est pas correct; voir : https://github.com/mozilla/pdf.js/blob/7bb066494f3f15c396941c3532b83da6d3465c6b/src/core/evaluator.js#L1303

C'est probablement aussi la cause de nombreux autres problèmes de sélection de texte ouvert. Cependant, la modification de la valeur peut être sujette à des erreurs pour d'autres fichiers PDF et nécessiterait de bons tests. Nous devrons peut-être vérifier comment d'autres visionneuses PDF open source (comme Poppler) le font, car le problème est que la spécification PDF n'indique pas quand un espace doit être utilisé pour la sélection de texte. Il ne définissait que la largeur d'espacement entre les caractères.

Malheureusement, https://github.com/mozilla/pdf.js/issues/9736#issuecomment -390629834 n'aidera pas ici, car il s'agit d'un fichier numérisé où chaque mot est positionné individuellement avec différentes tailles de police et coordonnées x/y ; voir par exemple le début du flux /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

...

Bonjour les gars, comme je suis sûr que vous le savez, d'autres projets de rendu PDF en souffrent également. J'utilise actuellement une application Web (Nextcloud) qui utilise pdf.js comme moteur de rendu PDF pour son application de navigateur.

Voici un exemple de fichier avec lequel j'ai travaillé sur d'autres utilitaires. Il s'agit d'un extrait numérisé du manuel d'entretien du pilote automatique d'un avion, imprimé à l'origine dans les années 1970 sur un équipement inconnu.

CenturyIIB-origscan.pdf
CenturyIIB-tesseract_hocr-uncleaned.pdf
CenturyIIB-tesseract_hocr-nettoyé.pdf

Le premier fichier est le scan d'origine sans couche de texte. Le second (hocr-non nettoyé) est un PDF/A qui a été traité avec Tesseract (v4.0) pour créer un calque de texte masqué. Le troisième (hocr-uncleaned) a été corrigé avec un

Dans les deuxième et troisième cas, l'option de rendu « hocr » avec Tesseract a été utilisée pour l'étape de rendu OCR (Tesseract a plusieurs moteurs de rendu internes). Si vous jetez un œil au forum des problèmes de Tesseract sur github, vous verrez qu'ils ont apporté quelques modifications à leur moteur de rendu le plus récent dans le but de résoudre également ce problème.

Voici quelques extraits copiés/collés de divers utilitaires...

hocr-unlceaned sur 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-non nettoyé sur 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-non nettoyé sur 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-non nettoyé sur 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-nettoyé sur la même version de Safari ci-dessus

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-nettoyé sur la même version de Chrome ci-dessus

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-nettoyé sur la même version d'Adobe Acrobat Pro ci-dessus

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-nettoyé sur la même version de pdf.js (Firefox) ci-dessus

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. 

Pour tous ceux qui voudraient reproduire ma chaîne d'outils pour d'autres exemples de fichiers ( main /_depedency_)...

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

unpaper 6.1 (pour de-skew, de-noise, etc.)
_libav 12.1
opencv 2.4.13.1
type libre2 2.8_

qpdf 8.0.1 (pour inspection/modification/création de pdf)
_script fantôme 9.16_

OCRmyPDF 6.2.0 (

Tout ce qui précède se trouve dans pratiquement tous les référentiels de packages Linux courants, OCRmyPDF est en pip, et les versions modernes de chacun d'entre eux sont également dans Homebrew pour OSX (tesseract doit être étiqueté sur leur git HEAD car la v4.0 est toujours marquée bêta) . Je les ai également tous exécutés sur FreeBSD (je dois compiler Tesseract, Leptonica et déballer à partir de la source). Tesseract/Leptonica est une excellente base de référence à utiliser pour créer de tels fichiers de test, à mon avis. Ils ont fait avancer l'OCR open source à pas de géant. Voici un exemple tiré d'un scan d'un document du XVIIIe siècle sur lequel il fait même un travail admirable, même s'il ne sait pas ce que sont les "S longs" et ne les transcrit pas en "f" minuscules.

Cette page vous a été utile?
0 / 5 - 0 notes