Ocrmypdf: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


'''OCRmyPDF''' erstellt  für eingescannte PDF-Dateien eine durchsuchbare Textebene
'''OCRmyPDF''' erstellt  für eingescannte PDF-Dateien eine durchsuchbare Textebene
== Beschreibung ==
== Beschreibung ==
Das Resultat wird im PDF/A2-b-Format gespeichert. Für die Texterkennung kommt Tesseract zum Einsatz, benötigt wird Version 4.xx.
Das Resultat wird im PDF/A2-b-Format gespeichert.  
* Für die Texterkennung kommt Tesseract zum Einsatz, benötigt wird Version 4.xx.


Des Weiteren werden verschiedene PDF-Programme (Ghostscript, QPDF) und Grafik-Anwendungen (ImageMagick, unpaper, pngquant) verwendet, außerdem Python und einige Python-PDF-Module. Das Programm überprüft bei Erstaufruf, ob die benötigten Programme installiert sind, und gibt bei fehlenden Teilen entsprechende Hinweise aus. Die Passung der Textlage ist sehr gut, die Verarbeitung sehr zuverlässig, die Dateigrößen akzeptable, und die Verwendung des PDF/A-2b-Standards für das Ergebnis kann unter Ubuntu momentan wohl sonst kein anderes Programm bieten.
Des Weiteren werden verschiedene PDF-Programme (Ghostscript, QPDF) und Grafik-Anwendungen (ImageMagick, unpaper, pngquant) verwendet, außerdem Python und einige Python-PDF-Module.  
* Das Programm überprüft bei Erstaufruf, ob die benötigten Programme installiert sind, und gibt bei fehlenden Teilen entsprechende Hinweise aus.  
* Die Passung der Textlage ist sehr gut, die Verarbeitung sehr zuverlässig, die Dateigrößen akzeptable, und die Verwendung des PDF/A-2b-Standards für das Ergebnis kann unter Ubuntu momentan wohl sonst kein anderes Programm bieten.


Hinweis
;Hinweis


PDF-Dateien, die direkt aus LibreOffice oder anderen Textbearbeitungsprogrammen erstellt wurden, sind in der Regel keine "grafischen" PDF-Dateien und lassen sich auch so durchsuchen. Eine zusätzliche Textlage ist daher nicht nötig. OCRmyPDF erstellt zumindest eine PDF/A-Version solcher PDF-Dateien.
PDF-Dateien, die direkt aus LibreOffice oder anderen Textbearbeitungsprogrammen erstellt wurden, sind in der Regel keine "grafischen" PDF-Dateien und lassen sich auch so durchsuchen.  
* Eine zusätzliche Textlage ist daher nicht nötig.  
* OCRmyPDF erstellt zumindest eine PDF/A-Version solcher PDF-Dateien.


=== Alternativen ===
=== Alternativen ===
Es gibt einige Programme, die eine Textlage für PDF-Dateien erstellen können. gscan2pdf und xsane2OCRmyPDF ermöglichen es, direkt Scans zu erstellen und zu verarbeiten, pdfocr und pdfsandwich arbeiten ähnlich wie OCRmyPDF auf der Kommandozeile mit vorhandene "grafischen" PDF-Dateien. Allgemein scheinen Programme, die für die Zusammenführung der Textlagen mit dem Bild auf hocr2pdf zurückgreifen, mehr Probleme mit der Textlagenpassung im "Sandwich"-PDF zu haben. Die Passung ist bei Verwendung von Perl- (gscan2pdf) oder Python-Modulen (wie hier in OCRmyPDF, oder indirekt, z.B. in Paperwork und ocrodjvu), wesentlich genauer. Problem mit der Passung gibt es häufig auch bei der Verwendung von mit Cuneiform-Linux erzeugten hOCR-Dateien, leider inzwischen auch mit von Tesseract 3.03 erstellten hOCR-Dateien.
Es gibt einige Programme, die eine Textlage für PDF-Dateien erstellen können.  
* gscan2pdf und xsane2OCRmyPDF ermöglichen es, direkt Scans zu erstellen und zu verarbeiten, pdfocr und pdfsandwich arbeiten ähnlich wie OCRmyPDF auf der Kommandozeile mit vorhandene "grafischen" PDF-Dateien.  
* Allgemein scheinen Programme, die für die Zusammenführung der Textlagen mit dem Bild auf hocr2pdf zurückgreifen, mehr Probleme mit der Textlagenpassung im "Sandwich"-PDF zu haben.  
* Die Passung ist bei Verwendung von Perl- (gscan2pdf) oder Python-Modulen (wie hier in OCRmyPDF, oder indirekt, z.B. in Paperwork und ocrodjvu), wesentlich genauer.  
* Problem mit der Passung gibt es häufig auch bei der Verwendung von mit Cuneiform-Linux erzeugten hOCR-Dateien, leider inzwischen auch mit von Tesseract 3.03 erstellten hOCR-Dateien.
 
== Installation ==
== Installation ==
   # apt install ocrmypdf
   # apt install ocrmypdf
Zeile 20: Zeile 31:
<code>-g</code>-Option erstelltes PDF in Evince
<code>-g</code>-Option erstelltes PDF in Evince


Die Eingabedatei ist eine rein "grafische", auch mehrseitige, PDF-Datei. Diese wird seitenweise ausgemessen (mit <code>identify</code> aus ImageMagick), und die Seiten in '''ppm'''/'''pgm'''-Dateien umgewandelt (das Programm erkennt, ob es sich um farbige oder schwarzweiße Vorlagen handelt). Optional werden diese Dateien geradegezogen (<code>convert</code> mit <code>-deskew</code>-Option) und gesäubert (unpaper). Aus diesen Vorlagen werden mit tesseract hOCR-Dateien mit dem Text und den Lageinformationen erstellt, diese Dateien überführt das '''hocrTransform.py'''-Skript jeweils in eine PDF-Datei mit Textlage. Die einzelnen PDF-Dateien werden wieder zusammengefasst, diese Ausgabedatei wird mittels Ghostscript in eine PDF/A-Datei umgeformt.
Die Eingabedatei ist eine rein "grafische", auch mehrseitige, PDF-Datei.  
* Diese wird seitenweise ausgemessen (mit <code>identify</code> aus ImageMagick), und die Seiten in '''ppm'''/'''pgm'''-Dateien umgewandelt (das Programm erkennt, ob es sich um farbige oder schwarzweiße Vorlagen handelt).  
* Optional werden diese Dateien geradegezogen (<code>convert</code> mit <code>-deskew</code>-Option) und gesäubert (unpaper).  
* Aus diesen Vorlagen werden mit tesseract hOCR-Dateien mit dem Text und den Lageinformationen erstellt, diese Dateien überführt das '''hocrTransform.py'''-Skript jeweils in eine PDF-Datei mit Textlage.  
* Die einzelnen PDF-Dateien werden wieder zusammengefasst, diese Ausgabedatei wird mittels Ghostscript in eine PDF/A-Datei umgeformt.


=== Probleme und Lösungen ===
=== Probleme und Lösungen ===
OCRmyPDF bearbeitet standardmäßig keine Dateien, die bereits mit einer Textlage versehen sind und gibt Fehlermeldungen dazu aus. Falls das gewünscht ist (z.B. weil später weitere Seiten angehängt worden sind oder versehentlich eine falsche Spracheinstellung gewählt wurde), kann die Option <code>-f</code> (force) verwendet werden, damit wird die Texterkennung für das gesamte Dokument wiederholt. Mit der <code>-s | --skip-text</code>-Option kann mindestens ab Version 6.1.2 auch angegeben werden, dass Seiten mit Textlage für die Texterkennung übersprungen werden. Neuere Versionen unterstützen zudem <code>--redo-ocr</code>, womit die OCR-Ebene ohne Qualitätsverlust durch Rasterisierung ersetzt wird, während digitaler Text gänzlich unberührt bleibt.
OCRmyPDF bearbeitet standardmäßig keine Dateien, die bereits mit einer Textlage versehen sind und gibt Fehlermeldungen dazu aus.  
* Falls das gewünscht ist (z.B. weil später weitere Seiten angehängt worden sind oder versehentlich eine falsche Spracheinstellung gewählt wurde), kann die Option <code>-f</code> (force) verwendet werden, damit wird die Texterkennung für das gesamte Dokument wiederholt.  
* Mit der <code>-s | --skip-text</code>-Option kann mindestens ab Version 6.1.2 auch angegeben werden, dass Seiten mit Textlage für die Texterkennung übersprungen werden.  
* Neuere Versionen unterstützen zudem <code>--redo-ocr</code>, womit die OCR-Ebene ohne Qualitätsverlust durch Rasterisierung ersetzt wird, während digitaler Text gänzlich unberührt bleibt.


=== Anwendungsmöglichkeiten ===
=== Anwendungsmöglichkeiten ===
OCRmyPDF lässt sich mit xsane2OCRmyPDF verwenden, um direkt aus XSane heraus hochwertige PDFs mit Textebene im PDF/A-2b-Standard zu erstellen. Für Scanner mit Tasten lässt sich via OCRmyPDF mit einigen Programmen die direkte Erstellung von PDFs mit Textlage per Tastendruck verwirklichen.
OCRmyPDF lässt sich mit xsane2OCRmyPDF verwenden, um direkt aus XSane heraus hochwertige PDFs mit Textebene im PDF/A-2b-Standard zu erstellen.  
* Für Scanner mit Tasten lässt sich via OCRmyPDF mit einigen Programmen die direkte Erstellung von PDFs mit Textlage per Tastendruck verwirklichen.
== Syntax ==
== Syntax ==
  $ ocrmypdf [OPTION(EN)] EINGABE.pdf AUSGABE.pdf  
  $ ocrmypdf [OPTION(EN)] EINGABE.pdf AUSGABE.pdf  
Zeile 62: Zeile 81:
|-
|-
|<code>-o</code>
|<code>-o</code>
|Falls die Auflösung eines Vorlagebildes niedriger sein sollte als die per Argument angegebene Auflösung in dpi, wird für die Texterkennung ein "oversampled" Bild mit letzterer Auflösung erstellt. Dadurch kann die Texterkennung verbessert werden, führt aber ggf. zu größeren PDF-Ausgabedateien (Standard: keine Verwendung von oversampled Vorlagen)
|Falls die Auflösung eines Vorlagebildes niedriger sein sollte als die per Argument angegebene Auflösung in dpi, wird für die Texterkennung ein "oversampled" Bild mit letzterer Auflösung erstellt.  
* Dadurch kann die Texterkennung verbessert werden, führt aber ggf. zu größeren PDF-Ausgabedateien (Standard: keine Verwendung von oversampled Vorlagen)
|-
|-
|<code>-f</code>
|<code>-f</code>
|Erzwinge eine Texterkennung für das gesamte Dokument, selbst wenn einige Seiten bereits Font-Daten enthalten (was bei PDF-Dateien aus Scans eigentlich nicht vorkommen sollte). Nutzung allerdings mit Bedacht, da bei überdimensionierten PDFs einen sehr hohe CPU/Arbeitsspeicher-Last entstehen kann!.
|Erzwinge eine Texterkennung für das gesamte Dokument, selbst wenn einige Seiten bereits Font-Daten enthalten (was bei PDF-Dateien aus Scans eigentlich nicht vorkommen sollte).  
* Nutzung allerdings mit Bedacht, da bei überdimensionierten PDFs einen sehr hohe CPU/Arbeitsspeicher-Last entstehen kann!.
|-
|-
|<code>-l</code>
|<code>-l</code>
Zeile 71: Zeile 92:
|-
|-
|<code>-C</code>
|<code>-C</code>
|Angabe einer zusätzlichen tesseract-Konfigurationsdatei (diese Option kann mehrfach verwendet werden). Die Konfigurationsdatei muss sich im '''tessdata/configs'''-Verzeichnis der tesseract-Installation befinden, normalerweise '''/usr/share/tesseract/''' zu finden. Die mitgelieferte Datei '''tess-cfg/no_ligature''', die die Verwendung der f-Ligaturen <code>fi</code> und <code>fl</code> verhindert, muss zur Nutzung entsprechend verschoben werden.
|Angabe einer zusätzlichen tesseract-Konfigurationsdatei (diese Option kann mehrfach verwendet werden).  
* Die Konfigurationsdatei muss sich im '''tessdata/configs'''-Verzeichnis der tesseract-Installation befinden, normalerweise '''/usr/share/tesseract/''' zu finden.  
* Die mitgelieferte Datei '''tess-cfg/no_ligature''', die die Verwendung der f-Ligaturen <code>fi</code> und <code>fl</code> verhindert, muss zur Nutzung entsprechend verschoben werden.
|-
|-
| -s
| -s
|Überspringt bei der Texterstellung alle Seiten, in denen schon Text enthalten ist, die Seiten werden aber in das Dokument aufgenommen. Sinnvoll für Seiten, die eine Mixtur aus Bildern, Textseiten und /oder bereits mit OCR versehenen Lagen beinhalten.
|Überspringt bei der Texterstellung alle Seiten, in denen schon Text enthalten ist, die Seiten werden aber in das Dokument aufgenommen.  
* Sinnvoll für Seiten, die eine Mixtur aus Bildern, Textseiten und /oder bereits mit OCR versehenen Lagen beinhalten.
|-
|-
|<code>--output-type {pdfa,pdf,pdfa-1,pdfa-2,pdfa-3}</code>
|<code>--output-type {pdfa,pdf,pdfa-1,pdfa-2,pdfa-3}</code>
|Legt das Ausgabeformat fest - <code>pdfa</code> erzeugt eine dem PDF/A-2b-Standard entsprechend Datei zur Langzeit-Archivierung (empfohlen, Standardeinstellung). Mit <code>pdf</code> wird versucht, die Eingabedateiinhalte so wenig als möglich zu verändern. Mit <code>pdf-a1</code> wird eine PDF/A1-b Datei erstellt, <code>pdf-a2</code> entspricht <code>pdfa</code>, <code>pdf-a3</code> erzeugt eine PDF/A3-b-Datei.
|Legt das Ausgabeformat fest - <code>pdfa</code> erzeugt eine dem PDF/A-2b-Standard entsprechend Datei zur Langzeit-Archivierung (empfohlen, Standardeinstellung).  
* Mit <code>pdf</code> wird versucht, die Eingabedateiinhalte so wenig als möglich zu verändern.  
* Mit <code>pdf-a1</code> wird eine PDF/A1-b Datei erstellt, <code>pdf-a2</code> entspricht <code>pdfa</code>, <code>pdf-a3</code> erzeugt eine PDF/A3-b-Datei.
|}
|}
Die Hilfefunktion liefert Informationen zu einer Vielzahl weiterer Optionen.
Die Hilfefunktion liefert Informationen zu einer Vielzahl weiterer Optionen.
=== Parameter ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Umgebungsvariablen ===
Zeile 94: Zeile 121:
=== Projekt-Homepage ===
=== Projekt-Homepage ===
=== Weblinks ===
=== Weblinks ===
* Projektseite 🇬🇧
* Projektseite
* Ausführliche ocrmypdf-Dokumentation 🇬🇧
* Ausführliche ocrmypdf-Dokumentation
* Toolbox: Texterkennung mit OCRmyPDF 🇩🇪 - heise Open Source, 09/2014
* Toolbox: Texterkennung mit OCRmyPDF - heise Open Source, 09/2014
* Linux, OCR and PDF: Scan to PDF/A 🇬🇧 - Blogbeitrag zum Scannen und Umwandeln in PDF/A-Dateien, 03/2013
* Linux, OCR and PDF: Scan to PDF/A - Blogbeitrag zum Scannen und Umwandeln in PDF/A-Dateien, 03/20135
* PDF  Übersichtsartikel zu PDF-Programmen
* PDF  Übersichtsartikel zu PDF-Programmen
* Texterkennung  Übersichtsartikel zum Thema OCR
* Texterkennung  Übersichtsartikel zum Thema OCR
=== Einzelnachweise ===
=== Einzelnachweise ===
<references />
<references />
== Testfragen ==
== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
<div class="toccolours mw-collapsible mw-collapsed">
Zeile 135: Zeile 164:
* '''tesseract-ocr''' (sowie gewünschte Sprachpakete)
* '''tesseract-ocr''' (sowie gewünschte Sprachpakete)


Befehl zum Installieren der Pakete:
  sudo apt-get install imagemagick parallel ghostscript qpdf unpaper tesseract-ocr  
  sudo apt-get install imagemagick parallel ghostscript qpdf unpaper tesseract-ocr  
OCRmyPDF ist seit Ubuntu 16.10 in den offiziellen Paketquellen enthalten; allerdings sind die Versionen nicht sonderlich aktuell. Unter 18.04 wird Version 6.1.2 installiert, unter 20.04 9.6.0 (siehe ocrmypdf).
Folgendes Paket muss installiert werden<sup>[1]</sup>:


* '''ocrmypdf''' (''universe'')
OCRmyPDF ist seit Ubuntu 16.10 in den offiziellen Paketquellen enthalten; allerdings sind die Versionen nicht sonderlich aktuell.
 
* Unter 18.04 wird Version 6.1.2 installiert, unter 20.04 9.6.0 (siehe ocrmypdf).
Befehl zum Installieren der Pakete:
sudo 
Oder mit apturl installieren, Link: apt://ocrmypdf


Die aktuelle Version 10.3.1 (Stand November 2020) kann aber unter 20.04 problemlos auch aus den Quellen von 20.10 bezogen und installiert werden.
Die aktuelle Version 10.3.1 (Stand November 2020) kann aber unter 20.04 problemlos auch aus den Quellen von 20.10 bezogen und installiert werden.


=== Verwendung vom Python-Paketmanager ===
=== Verwendung vom Python-Paketmanager ===
==== 18.04 ====
==== 18.04 ====
Dieser Abschnitt erklärt die Installation der aktuellsten Version mittels pip unter 18.04. Benötigt wird eine aktuellere Version von pip als unter 18.04 in den Quellen vorliegt. Sie kann von <nowiki>https://bootstrap.pypa.io</nowiki> bezogen und installiert werden (siehe auch pip (Abschnitt „Manuelle-Installation“)), z.B. mit
Dieser Abschnitt erklärt die Installation der aktuellsten Version mittels pip unter 18.04.  
* Benötigt wird eine aktuellere Version von pip als unter 18.04 in den Quellen vorliegt.  
* Sie kann von <nowiki>https://bootstrap.pypa.io</nowiki> bezogen und installiert werden (siehe auch pip (Abschnitt „Manuelle-Installation“)), z.B. mit
  wget <nowiki>https://bootstrap.pypa.io/get-pip.py</nowiki> && python3 get-pip.py  
  wget <nowiki>https://bootstrap.pypa.io/get-pip.py</nowiki> && python3 get-pip.py  
Außerdem werden neben den o.g. Programmen zwei zusätzliche Pakete benötigt:
Außerdem werden neben den o.g. Programmen zwei zusätzliche Pakete benötigt:
Zeile 159: Zeile 182:
* '''pngquant'''
* '''pngquant'''


Befehl zum Installieren der Pakete:
  # apt install libxml2 pngquant  
  sudo apt-get install libxml2 pngquant
Oder mit apturl installieren, Link: apt://libxml2,pngquant


(Quelle: Installation der aktuellen Version unter 18.04 🇬🇧)


==== Abschluss der Installation ====
==== Abschluss der Installation ====
Zeile 169: Zeile 189:
  export PATH=$HOME/.local/bin:$PATH
  export PATH=$HOME/.local/bin:$PATH
  pip3 install --user ocrmypdf  
  pip3 install --user ocrmypdf  
Dabei werden alle weiteren benötigten Abhängigkeiten direkt mit bezogen. Installiert wird die ocrmypdf-Version 9.5.0 (Stand Januar 2020). Eine ältere ocrmypdf-Version muss ggf. erst entfernt werden (z.B. durch Entfernen/Umbenennen des Ordners '''/usr/lib/python3/dist-packages/ocrmypdf-X.X.X.dist-info''' mit Root-Rechten<sup>[5]</sup>).
 
Dabei werden alle weiteren benötigten Abhängigkeiten direkt mit bezogen.  
* Installiert wird die ocrmypdf-Version 9.5.0 (Stand Januar 2020).  
* Eine ältere ocrmypdf-Version muss ggf. erst entfernt werden (z.B. durch Entfernen/Umbenennen des Ordners '''/usr/lib/python3/dist-packages/ocrmypdf-X.X.X.dist-info''' mit Root-Rechten<sup>[5]</sup>).


=== Experten-Info ===
=== Experten-Info ===
OCRmyPDF kann zur Erstellung von stark komprimierten SW-PDFs den jbig2-Encoder verwenden, ähnlich dem für DjVu-Dateien eingesetzten CJB2-Algorithmus. Allerdings ist das Programm derzeit nicht in den Quellen vorhanden, und muss manuell erstellt werden. Damit ist auch die Nutzung der Option <code>--jbig2-lossy</code> möglich, die noch weitere Größenreduzierungen möglich macht (siehe auch Hinweise 🇬🇧 in der OCRmyPDF-Dokumentation).
OCRmyPDF kann zur Erstellung von stark komprimierten SW-PDFs den jbig2-Encoder verwenden, ähnlich dem für DjVu-Dateien eingesetzten CJB2-Algorithmus.  
 
* Allerdings ist das Programm derzeit nicht in den Quellen vorhanden, und muss manuell erstellt werden.  
* Damit ist auch die Nutzung der Option <code>--jbig2-lossy</code> möglich, die noch weitere Größenreduzierungen möglich macht (siehe auch Hinweise 🇬🇧 in der OCRmyPDF-Dokumentation).


[[Kategorie:Entwurf]]
[[Kategorie:Entwurf]]

Version vom 3. August 2022, 10:08 Uhr


OCRmyPDF erstellt für eingescannte PDF-Dateien eine durchsuchbare Textebene

Beschreibung

Das Resultat wird im PDF/A2-b-Format gespeichert.

  • Für die Texterkennung kommt Tesseract zum Einsatz, benötigt wird Version 4.xx.

Des Weiteren werden verschiedene PDF-Programme (Ghostscript, QPDF) und Grafik-Anwendungen (ImageMagick, unpaper, pngquant) verwendet, außerdem Python und einige Python-PDF-Module.

  • Das Programm überprüft bei Erstaufruf, ob die benötigten Programme installiert sind, und gibt bei fehlenden Teilen entsprechende Hinweise aus.
  • Die Passung der Textlage ist sehr gut, die Verarbeitung sehr zuverlässig, die Dateigrößen akzeptable, und die Verwendung des PDF/A-2b-Standards für das Ergebnis kann unter Ubuntu momentan wohl sonst kein anderes Programm bieten.
Hinweis

PDF-Dateien, die direkt aus LibreOffice oder anderen Textbearbeitungsprogrammen erstellt wurden, sind in der Regel keine "grafischen" PDF-Dateien und lassen sich auch so durchsuchen.

  • Eine zusätzliche Textlage ist daher nicht nötig.
  • OCRmyPDF erstellt zumindest eine PDF/A-Version solcher PDF-Dateien.

Alternativen

Es gibt einige Programme, die eine Textlage für PDF-Dateien erstellen können.

  • gscan2pdf und xsane2OCRmyPDF ermöglichen es, direkt Scans zu erstellen und zu verarbeiten, pdfocr und pdfsandwich arbeiten ähnlich wie OCRmyPDF auf der Kommandozeile mit vorhandene "grafischen" PDF-Dateien.
  • Allgemein scheinen Programme, die für die Zusammenführung der Textlagen mit dem Bild auf hocr2pdf zurückgreifen, mehr Probleme mit der Textlagenpassung im "Sandwich"-PDF zu haben.
  • Die Passung ist bei Verwendung von Perl- (gscan2pdf) oder Python-Modulen (wie hier in OCRmyPDF, oder indirekt, z.B. in Paperwork und ocrodjvu), wesentlich genauer.
  • Problem mit der Passung gibt es häufig auch bei der Verwendung von mit Cuneiform-Linux erzeugten hOCR-Dateien, leider inzwischen auch mit von Tesseract 3.03 erstellten hOCR-Dateien.

Installation

 # apt install ocrmypdf

Anwendungen

Funktionsweise

-g-Option erstelltes PDF in Evince

Die Eingabedatei ist eine rein "grafische", auch mehrseitige, PDF-Datei.

  • Diese wird seitenweise ausgemessen (mit identify aus ImageMagick), und die Seiten in ppm/pgm-Dateien umgewandelt (das Programm erkennt, ob es sich um farbige oder schwarzweiße Vorlagen handelt).
  • Optional werden diese Dateien geradegezogen (convert mit -deskew-Option) und gesäubert (unpaper).
  • Aus diesen Vorlagen werden mit tesseract hOCR-Dateien mit dem Text und den Lageinformationen erstellt, diese Dateien überführt das hocrTransform.py-Skript jeweils in eine PDF-Datei mit Textlage.
  • Die einzelnen PDF-Dateien werden wieder zusammengefasst, diese Ausgabedatei wird mittels Ghostscript in eine PDF/A-Datei umgeformt.

Probleme und Lösungen

OCRmyPDF bearbeitet standardmäßig keine Dateien, die bereits mit einer Textlage versehen sind und gibt Fehlermeldungen dazu aus.

  • Falls das gewünscht ist (z.B. weil später weitere Seiten angehängt worden sind oder versehentlich eine falsche Spracheinstellung gewählt wurde), kann die Option -f (force) verwendet werden, damit wird die Texterkennung für das gesamte Dokument wiederholt.
  • Mit der -s | --skip-text-Option kann mindestens ab Version 6.1.2 auch angegeben werden, dass Seiten mit Textlage für die Texterkennung übersprungen werden.
  • Neuere Versionen unterstützen zudem --redo-ocr, womit die OCR-Ebene ohne Qualitätsverlust durch Rasterisierung ersetzt wird, während digitaler Text gänzlich unberührt bleibt.

Anwendungsmöglichkeiten

OCRmyPDF lässt sich mit xsane2OCRmyPDF verwenden, um direkt aus XSane heraus hochwertige PDFs mit Textebene im PDF/A-2b-Standard zu erstellen.

  • Für Scanner mit Tasten lässt sich via OCRmyPDF mit einigen Programmen die direkte Erstellung von PDFs mit Textlage per Tastendruck verwirklichen.

Syntax

$ ocrmypdf [OPTION(EN)] EINGABE.pdf AUSGABE.pdf 

Optionen

OCRmyPDF-Optionen
Option Funktion
-h Hilfefunktion
-v Ausführlichkeit der Meldungen erhöhen (diese Option kann mehrfach verwendet werden)
-k Temporärdateien nicht löschen (Speicherort ist standardmäßig OCRmyPDF-x.x/tmp/DATUM_UHRZEIT.filename.EINGABE ohne Endung)
-g Debug-Modus:

- erstellt eine PDF-Datei, in der jede Seite zweimal vorhanden ist (einmal nur mit der Textlage und den "bounding boxes", einmal mit dem Bild; siehe Abbildung) - Ausführlichkeit wird auf das höchstmögliche Level gestellt - die Temporärdateien werden nicht gelöscht, es wird ein Log zur PDF-Überprüfung angelegt

-d Jede Seite vor der Texterkennung geradeziehen (mit convert aus ImageMagick)
-c Jede Seite vor Texterkennung säubern (mit unpaper)
-i Das gesäuberte Bild in der Ausgabe-PDF-Datei verwenden (Standard ist es, das Original zu verwenden, oder die geradegezogene Version, wenn die -d-Option gesetzt ist)
-o Falls die Auflösung eines Vorlagebildes niedriger sein sollte als die per Argument angegebene Auflösung in dpi, wird für die Texterkennung ein "oversampled" Bild mit letzterer Auflösung erstellt.
  • Dadurch kann die Texterkennung verbessert werden, führt aber ggf. zu größeren PDF-Ausgabedateien (Standard: keine Verwendung von oversampled Vorlagen)
-f Erzwinge eine Texterkennung für das gesamte Dokument, selbst wenn einige Seiten bereits Font-Daten enthalten (was bei PDF-Dateien aus Scans eigentlich nicht vorkommen sollte).
  • Nutzung allerdings mit Bedacht, da bei überdimensionierten PDFs einen sehr hohe CPU/Arbeitsspeicher-Last entstehen kann!.
-l Angabe der Sprache in der PDF-Datei, die Texterkennung wird dadurch verbessert (Standard ohne Angabe ist Englisch), jede von Tesseract unterstützte Sprache ist möglich
-C Angabe einer zusätzlichen tesseract-Konfigurationsdatei (diese Option kann mehrfach verwendet werden).
  • Die Konfigurationsdatei muss sich im tessdata/configs-Verzeichnis der tesseract-Installation befinden, normalerweise /usr/share/tesseract/ zu finden.
  • Die mitgelieferte Datei tess-cfg/no_ligature, die die Verwendung der f-Ligaturen und verhindert, muss zur Nutzung entsprechend verschoben werden.
-s Überspringt bei der Texterstellung alle Seiten, in denen schon Text enthalten ist, die Seiten werden aber in das Dokument aufgenommen.
  • Sinnvoll für Seiten, die eine Mixtur aus Bildern, Textseiten und /oder bereits mit OCR versehenen Lagen beinhalten.
--output-type {pdfa,pdf,pdfa-1,pdfa-2,pdfa-3} Legt das Ausgabeformat fest - pdfa erzeugt eine dem PDF/A-2b-Standard entsprechend Datei zur Langzeit-Archivierung (empfohlen, Standardeinstellung).
  • Mit pdf wird versucht, die Eingabedateiinhalte so wenig als möglich zu verändern.
  • Mit pdf-a1 wird eine PDF/A1-b Datei erstellt, pdf-a2 entspricht pdfa, pdf-a3 erzeugt eine PDF/A3-b-Datei.

Die Hilfefunktion liefert Informationen zu einer Vielzahl weiterer Optionen.

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Links

Projekt-Homepage

Weblinks

  • Projektseite
  • Ausführliche ocrmypdf-Dokumentation
  • Toolbox: Texterkennung mit OCRmyPDF - heise Open Source, 09/2014
  • Linux, OCR and PDF: Scan to PDF/A - Blogbeitrag zum Scannen und Umwandeln in PDF/A-Dateien, 03/20135
  • PDF Übersichtsartikel zu PDF-Programmen
  • Texterkennung Übersichtsartikel zum Thema OCR

Einzelnachweise


Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5

TMP

Installation

Zur Nutzung werden folgende Pakete benötigt:

  • imagemagick
  • parallel
  • ghostscript
  • qpdf
  • unpaper
  • tesseract-ocr (sowie gewünschte Sprachpakete)
sudo apt-get install imagemagick parallel ghostscript qpdf unpaper tesseract-ocr 

OCRmyPDF ist seit Ubuntu 16.10 in den offiziellen Paketquellen enthalten; allerdings sind die Versionen nicht sonderlich aktuell.

  • Unter 18.04 wird Version 6.1.2 installiert, unter 20.04 9.6.0 (siehe ocrmypdf).

Die aktuelle Version 10.3.1 (Stand November 2020) kann aber unter 20.04 problemlos auch aus den Quellen von 20.10 bezogen und installiert werden.

Verwendung vom Python-Paketmanager

18.04

Dieser Abschnitt erklärt die Installation der aktuellsten Version mittels pip unter 18.04.

  • Benötigt wird eine aktuellere Version von pip als unter 18.04 in den Quellen vorliegt.
  • Sie kann von https://bootstrap.pypa.io bezogen und installiert werden (siehe auch pip (Abschnitt „Manuelle-Installation“)), z.B. mit
wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py 

Außerdem werden neben den o.g. Programmen zwei zusätzliche Pakete benötigt:

  • libxml2
  • pngquant
# apt install libxml2 pngquant 


Abschluss der Installation

Dann kann OCRmyPDF für den aktuellen Benutzer installiert werden, das Verzeichnis ~/.local/bin muss in PATH Umgebungsvariable auftauchen, sichergestellt z.B. durch

export PATH=$HOME/.local/bin:$PATH
pip3 install --user ocrmypdf 
Dabei werden alle weiteren benötigten Abhängigkeiten direkt mit bezogen. 
  • Installiert wird die ocrmypdf-Version 9.5.0 (Stand Januar 2020).
  • Eine ältere ocrmypdf-Version muss ggf. erst entfernt werden (z.B. durch Entfernen/Umbenennen des Ordners /usr/lib/python3/dist-packages/ocrmypdf-X.X.X.dist-info mit Root-Rechten[5]).

Experten-Info

OCRmyPDF kann zur Erstellung von stark komprimierten SW-PDFs den jbig2-Encoder verwenden, ähnlich dem für DjVu-Dateien eingesetzten CJB2-Algorithmus.

  • Allerdings ist das Programm derzeit nicht in den Quellen vorhanden, und muss manuell erstellt werden.
  • Damit ist auch die Nutzung der Option --jbig2-lossy möglich, die noch weitere Größenreduzierungen möglich macht (siehe auch Hinweise 🇬🇧 in der OCRmyPDF-Dokumentation).