Pdf.js: Suche mit Strg+F funktioniert nicht mit zwei Wörtern

Erstellt am 17. Mai 2018  ·  4Kommentare  ·  Quelle: mozilla/pdf.js

Anhängen (empfohlen) oder Link zur PDF-Datei hier:
dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

Aufbau:

  • Webbrowser und seine Version: Firefox 60/Chromium 66
  • Betriebssystem und dessen Version: Linux/Windows 7
  • PDF.js-Version: v1.10.88 oder v1.9.426 oder die in Firefox 60 integrierte Version

Schritte zum Reproduzieren des Problems:

  1. Drücken Sie Strg+F und suchen Sie nach "Pionier von"
  2. Pioneer wird hervorgehoben, aber sobald Sie ein Leerzeichen eingeben, werden keine Ergebnisse gefunden

pdftotext zeigt den richtigen Text an:

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

Es funktioniert im integrierten PDF-Viewer von Chrome, daher ist es kein Problem mit dem PDF.

Link zu einem Viewer (sofern auf einer anderen Website als mozilla.github.io/pdf.js oder als Firefox/Chrome-Erweiterung gehostet):
https://newspapers.lib.utah.edu/pdfjs1.9/web/viewer.html?file=/udn_files/de/e7/dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf

4-text-selection

Hilfreichster Kommentar

Daran würde ich gerne arbeiten,
@timvandermeij Bitte helft mir, wo ich anfangen soll, während ich an diesem Problem arbeite

Alle 4 Kommentare

Daran würde ich gerne arbeiten,
@timvandermeij Bitte helft mir, wo ich anfangen soll, während ich an diesem Problem arbeite

Ich würde vorschlagen, zuerst zu überprüfen, was wir in der Textebene haben, da dies möglicherweise erklären kann, warum die Suche nicht funktioniert. Ich vermute, dass der Raumfaktor nicht korrekt ist; siehe: https://github.com/mozilla/pdf.js/blob/7bb066494f3f15c396941c3532b83da6d3465c6b/src/core/evaluator.js#L1303

Dies ist höchstwahrscheinlich auch die Ursache für viele andere Probleme bei der Auswahl von offenem Text. Das Ändern des Werts kann jedoch bei anderen PDF-Dateien fehleranfällig sein und erfordert gute Tests. Möglicherweise müssen wir überprüfen, wie andere Open-Source-PDF-Viewer (wie Poppler) dies tun, da das Problem darin besteht, dass die PDF-Spezifikation nicht angibt, wann ein Leerzeichen für die Textauswahl verwendet werden muss. Es definierte nur die Abstandsbreite zwischen den Zeichen.

Leider hilft https://github.com/mozilla/pdf.js/issues/9736#issuecomment -390629834 hier nicht weiter, da dies eine gescannte Datei ist, in der jedes Wort einzeln mit unterschiedlichen Schriftgrößen und x/y-Koordinaten positioniert wird; siehe zB den Anfang des /Contents Streams:

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

...

Hallo Leute, wie Sie sicher wissen, leiden auch andere PDF-Rendering-Projekte darunter. Ich verwende derzeit eine Web-App (Nextcloud), die pdf.js als PDF-Renderer für ihre Browseranwendung verwendet.

Hier ist ein Beispiel für eine Datei, mit der ich bei anderen Dienstprogrammen gearbeitet habe. Dies ist ein gescannter Auszug aus dem Autopilot-Servicehandbuch eines Flugzeugs, das ursprünglich in den 1970er Jahren auf unbekannter Ausrüstung gedruckt wurde.

CenturyIIB-Origscan.pdf
CenturyIIB-tesseract_hocr-uncleaned.pdf
CenturyIIB-tesseract_hocr-cleaned.pdf

Die erste Datei ist der Originalscan ohne Textebene. Das zweite (hocr-ungereinigte) ist ein PDF/A, das mit Tesseract (v4.0) verarbeitet wurde , um eine versteckte unpaper (v6.1) entzerrt und dann mit der gleichen Version von Tesseract mit

Sowohl im zweiten als auch im dritten Fall wurde die Rendering-Option „hocr“ mit Tesseract für die OCR-Rendering-Phase verwendet (Tesseract verfügt über mehrere interne Renderer). Wenn Sie sich das Issues-Forum von Tesseract auf github ansehen, werden Sie feststellen, dass sie einige Änderungen an ihrem neueren Renderer vorgenommen haben, um auch dieses Problem anzugehen.

Hier sind einige Auszüge, die von verschiedenen Dienstprogrammen kopiert/eingefügt wurden...

hocr-unlceaned auf 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-ungereinigt auf 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-ungereinigt auf 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-ungereinigt auf 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-bereinigt auf der gleichen Safari-Version oben

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-bereinigt auf der gleichen Version von Chrome oben

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-bereinigt auf der gleichen Version von Adobe Acrobat Pro oben

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-bereinigt auf der gleichen Version von pdf.js (Firefox) oben

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. 

Für alle, die meine Toolchain für andere Beispieldateien reproduzieren möchten ( main /_depedency_)...

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

unpaper 6.1 (für Schräglagenkorrektur, Rauschunterdrückung usw.)
_libav 12.1
opencv 2.4.13.1
freetype2 2.8_

qpdf 8.0.1 (zur Einsicht/Änderung/Erstellung von pdfs)
_Geisterskript 9.16_

OCRmyPDF 6.2.0 (Python v3-Wrapper für die oben genannten Dienstprogramme)

Alle oben genannten sind in praktisch jedem gängigen Linux-Paket-Repository enthalten, OCRmyPDF ist in pip, und moderne Builds von allen sind auch in Homebrew für OSX (tesseract muss mit ihrem git HEAD getaggt werden, da v4.0 noch als Beta markiert ist). . Ich habe sie auch alle auf FreeBSD ausgeführt (muss Tesseract, Leptonica und unpaper aus dem Quellcode erstellen). Tesseract/Leptonica ist meiner Meinung nach eine großartige Basis für die Erstellung solcher Testdateien. Sie haben Open-Source-OCR sprunghaft vorangebracht. Hier ist ein Beispiel aus einem Scan eines Dokuments aus dem 18.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen