Anhängen (empfohlen) oder Link zur PDF-Datei hier:
dee752ed0f726d8785abf360ca783d91f96f9a2e.pdf
Aufbau:
Schritte zum Reproduzieren des Problems:
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
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.
Hilfreichster Kommentar
Daran würde ich gerne arbeiten,
@timvandermeij Bitte helft mir, wo ich anfangen soll, während ich an diesem Problem arbeite