Ubuntu 12.04 „Precise Pangolin“
Ubuntu 10.04 „Lucid Lynx“
ExactImage ist eine Sammlung von Kommandozeilen-Werkzeugen zur Bearbeitung von Grafik-Dateien. Sie wurde von der Firma ExactCODE
als Alternative zu ImageMagick für Archivista
entwickelt. Hauptaugenmerk lag dabei auf der Geschwindigkeit; einige Konvertieroptionen werden - verglichen mit ImageMagick - in bis zu 20facher Geschwindigkeit durchgeführt. Das Programm eignet sich somit auch für "schwachbrüstige" Rechner. Es werden etliche Werkzeuge bereitgestellt, die gerade für die Texterkennung benötigt werden. Das Programm ist zwar kommerziell entwickelt worden, steht aber unter Open-Source-Lizenz.
Das Programm ist in den Paketquellen vorhanden, installiert[1] werden muss das Paket
exactimage
mit apturl
Paketliste zum Kopieren:
sudo apt-get install exactimage
sudo aptitude install exactimage
ExactImage wird noch aktiv weiterentwickelt. Es lohnt daher ggf., den Quellcode selbst zu kompilieren. Der Quellcode kann von der Downloadseite bezogen werden. Dazu das aktuelle .tar.bz2-Archiv herunterladen, entpacken[2] und kompilieren[3].
Unter Ubuntu 10.04 ist die Kompilierung (getestet mit Version 0.8.4) kein Problem, allerdings sollte ein ggf. installiertes Paket exactimage-dbg zuvor entfernt werden. Beim Erstellen eines Paketes außerdem darauf achten, dass der Namen exactimage, nicht exact-image, wie von checkinstall zunächst vorgeschlagen, heißen sollte, um eine ältere Version zu ersetzen.
ExactImage unterstützt eine Vielzahl von Dateiformaten, z.T. über die eigenen Bibliotheken, z.T. über externe, die ggf. als Abhängigkeiten mit installiert werden. Momentan sind das BMP, GIF, JPEG und JPEG2000, OpenEXR, PNG, PBM, RAW, TIFF, XPM,PCX, und Targa/TGA, die vollständig unterstützt werden. SVG-Dateien können momentan nur gelesen werden. PDFs können nur geschrieben werden, dabei ist die Einbettung von JPEG und JPEG2000, sowie "vector geometry" und Schriften möglich, auch mehrseitige PDFs werden unterstützt. Ähnliches gilt für PS und EPS (nur Schreiben möglich, JPEG-Dateien können eingebettet werden). Außerdem lassen sich auch etliche Digital Camera RAW-Dateien verarbeiten. Weitere Formate sind in Vorbereitung, Wünsche können an die Entwickler weitergegeben werden.
Das Paket beinhaltet folgende Programme:
ExactImage-Programme | |
Aufruf | Funktion |
econvert | Hauptbestandteil zum Konvertieren und Bearbeiten von Bilddateien |
optimize2bw | konvertiert und bearbeitet Graustufen- und farbige Vorlagen zur Archivierung in 1-bit-monochrome (schwarz-weiß) |
hocr2pdf | zum Erzeugen von "durchsuchbaren" PDF-Dateien |
edentify | liefert Informationen zu Bilddateien (Größe, Auflösung, Farbraum, Kanäle) |
e2mtiff | konvertiert unterstützte Formate in mehrseitige .tiff-Dateien |
empty-page | erkennt leere Seiten, um sie von weiterer Bearbeitung ausschließen zu können |
bardecode | zum Auslesen von Barcodes |
Zu jedem Programmteil existiert eine Manpage, die weitere Informationen liefert.
econvert
ist der Hauptbestandteil des Programm. Es lehnt sich an die "convert"-Syntax an, ist in der Handhabung aber einfacher. Die allgemeine Syntax lautet:
econvert -i DATEINAME.ENDUNG [--OPTION(EN)] -o DATEINAME2.ENDUNG [--OPTION(EN)] -o DATEINAME3.ENDUNG
Dabei ist -i
die Eingabe-Datei, ggf. gefolgt von Option(en), -o
die Ausgabedatei. Es können in einem Durchgang mehrere Ausgaben definiert werden, die je nach Position in der Zeile die zuvor angegebenen Optionen verwenden. So können in einem Aufruf z.B. eine Konvertierung mit Bearbeitung und gleich eine Thumbnail-Datei dazu erstellt werden.
Es stehen eine Vielzahl von Optionen (insgesamt 38) zur Bearbeitung zur Verfügung. Sie umfassen grundlegende Dinge wie Drehung/Spiegelung, Skalierung/DPI-Veränderung, Anpassung des Farbkontrasts, des -tons, der -sättigung, der Helligkeit, des Gammawert, Dithering-Funktionen etc., aber auch Möglichkeiten des Zuschnitts, Ränder zu säubern, oder Vorlagen gerade zu ziehen (vergleichbar mit einigen unpaper-Optionen), oder den Umgang mit RAW-Daten aus Digitalkameras.
U.a. ist auch eine weitestgehend verlustfreie Verarbeitung von .jpg-Dateien möglich. Dazu ein Beispiel aus der Dokumentation:
econvert -i AV220-Scan.JPG --resolution 300x300 -o 1.jpg --rotate 90 -o 2.jpg --rotate 180 -o 3.jpg --rotate -90 -o 4.jpg --flip -o 5.jpg --flop -o 6.jpg --scale 0.25 -o thumb.jpg
Hier wird das Bild 1.jpg aus den Original-JPEG-DCT-Koeffizienten erstellt, diese werden umgestellt, und für die Ausgabe der weiteren 5 Bilder verwendet, die ohne weitere Verschlechterung und in großer Geschwindigkeit erstellt werden. Nur für die letzte Ausgabe des "thumbnails" wird das Original tatsächlich dekodiert, aber auch dazu nur teilweise.
Die Optionen und ihre Verwendung werden in der Manpage oder über den Aufruf econvert --help
näher erläutert.
Ein mächtiger Befehl zum Erstellen von Dateien zur speicherplatzsparenden Archivierung oder Vorlagen z.B. für eine Texterkennung. Mit optimize2bw
lassen sich farbige oder Bilder in Graustufen in "kleine", optimierte Schwarz-Weiß-Bilder konvertieren. Dazu können die Bilder z.B. gleich gesäubert, geschärft und auf eine bestimmte Auflösung verändert oder in der Größe skaliert werden.
Die allgemeine Syntax lautet:
optimize2bw [-OPTION] -i|--input FILE -o|--output FILE
Folgende Optionen stehen zur Verfügung:
optimize2bw-Optionen | |
Option | Funktion |
-n, --denoise | Entfernt ("denoise") Verunreinigungen durch vereinzelte Pixel |
-d, --dpi DPI | Skaliert das Bild mit dem angegebenen DPI-Wert |
-h, --high VALUE | Oberer Normalisierungswert |
-l, --low VALUE | Unterer Normalisierungswert |
-r, --radius RADIUS | Radius der "unsharp mask" in Pixeln |
-s, --scale SCALE | Skaliert die Ausgabe mit dem angegebenen Faktor |
-sd, --standard-deviation DEVIATION | Standardabweichung bei der Gaußschen Normalverteilung |
-t, --threshold VALUE | Schwellwert für Weiß |
hocr2pdf
kann verwendet werden, um aus im hOCR-Format vorliegenden Dateien (einem "informationsreichen" HTML-Format, welches z.B. das OCR-Programm Cuneiform-Linux oder Tesseract ab Version 3.0x ausgeben können) und der dazugehörigen Bilddatei eine durchsuchbare PDF-Datei zu erstellen. Dazu werden sogenannte "Sandwich-PDFs" erstellt, in der das Original-Bild mit der Texterkennung im hOCR-Format übereinandergelegt werden. Bei exakter Passung wird ein gefundener Suchbegriff aus der hOCR-Datei direkt in der PDF-"Oberfläche" angezeigt (ein einfaches Beispiel findet sich auf auxnet.de ).
Die Syntax des Befehls lautet:
hocr2pdf [-OPTION] -i [EINGABE_DATEINAME.ENDUNG] -o AUSGABE_DATEINAME.pdf < EINGABE-DATEINAME.html/hocr
Folgende Optionen können mit hocr2pdf verwendet werden:
hocr2pdf-Optionen | |
Option | Funktion |
-n|--no-image | PDF ohne die Bildebene erstellen |
-r|--resolution RESOLUTION | Auflösung durch angegebenen Wert überschreiben |
-s|--sloppy-text | Zeichen mit größeren Abständen zusammenfassen, keine einzelnen Zeichen wiedergeben |
-t|--text DATEINAME | reinen Text extrahieren, dabei wenn möglich Bindestriche entfernen. Es wird eine zusätzliche Datei erstellt, in der nur der reine Text abgespeichert wird. Zumindest bei mit tesseract erstellten hOCR-Dateien funktioniert die Entfernung der Bindestriche nicht. |
pdfsandwich sowie pdfocr fassen die Schritte Texterkennung und Erstellung eines Sandwich-PDFs zusammen. Die Vorlage muss allerdings bereits im PDF-Format vorliegen. Von blog.beimax.de kann außerdem ein einfaches Skript bezogen werden, das den Vorgang ebenfalls automatisiert. Mit xsane2sandwich können Scans aus XSane heraus direkt als PDF mit Textlage erstellt werden.
Leider funktioniert die hOCR-Funktion in Cuneiform Version 0.9.0 und höher im Zusammenspiel mit hocr2pdf nicht richtig. Nach der Zusammenführung der Bildebene mit der erstellten .hocr-OCR-Datei kann die Schrift teilweise in überdimensionierter Größe dargestellt werden, sodass die Passung nicht stimmt. Im schlimmsten Fall fehlen sogar Teile des OCR-Ergebnis in der erstellten PDF-Datei. Da pdfocr aber eine Cuneiform-Version benötigt, die gegen libmagick++-dev kompiliert wurde, hilft auch die Version 0.7.0 aus den Ubuntu-Paketquellen nicht. Abhilfe schafft momentan nur die Kompilierung aus dem Quellcode einer Version kleiner 0.9.0, mit zuvor installiertem Paket libmagick++-dev.
tesseract-ocr in Version 3.0x kann aber inzwischen auch hocr/html-Ausgaben produzieren, die weitgehend kompatibel mit hocr2pdf sind.
Zur Korrektur von hOCR-Dateien gibt es ein Firefox-Plugin , mit dem die Texte im Browser korrigiert und angepasst werden können. Leider gibt es Probleme mit der Zeichensatzerhaltung: Umlaute etc. werden beim Abspeichern umgeformt, sodass z.B.
gehören
statt gehören
abgespeichert wird.
Momentan müssen diese Umformungen für eine Verwendung in PDF-Sandwiches "zurückgeformt" werden, weil sonst die Passung in den PDF-Dateien nicht stimmt, die Wörter zudem nicht gefunden, z.T. auch ganze Abschnitte nicht mit in die Erstellung einbezogen werden. In diesem Forums-Thread wird eine Möglichkeit beschrieben, diese Umformungen zurückzunehmen. Es wird eine ruby-Installation in Version 1.9.1 benötigt.
ruby1.9.1
mit apturl
Paketliste zum Kopieren:
sudo apt-get install ruby1.9.1
sudo aptitude install ruby1.9.1
Dieser Terminal-Befehl
ruby1.9.1 -i.bck -pe '$_.gsub!(/&#(\d+);/){ eval("\"\\u%04x\"" % $1.to_i) }' TEXTERKENNUNG.html/hocr
sorgt dafür, dass alle Notierungen wieder in der ursprünglichen Version formatiert sind. Außerdem wird über den Schalter -i.bck
ein Sicherungsdatei angelegt. Wer die nicht benötigt, kann das .bck
auch weglassen. Die Korrektur erfolgt aber direkt im Dokument. Mit früheren ruby-Versionen scheint das Vorgehen nicht zu funktionieren!
edentify
liefert Informationen zu einer Bilddatei. Der Befehl:
edentify DATEINAM.ENDUNG>
kann z.B. etwas wie:
test.png: PNG 82x82 @ 89x89dpi (23x23mm) 32 bits, 4 channels
ausgeben. Dabei wird, wenn auslesbar, das Bildformat, die Größe in Pixeln, die Auflösung in dpi, sowie die Anzahl der Bits und Kanäle angezeigt.
Der Befehl kann zum Erstellen von mehrseitigen .tiff-Dokumenten verwendet werden. Dabei kann jedes unterstützte Eingabeformat verwendet werden. Die Syntax lautet:
e2mtiff [-o|--output OUTPUT] FILE...FILE
Es können dabei auch Vorlagen in verschiedenen Formaten zu einem "Multipage-.tiff" verarbeitet werden.
Dieser Befehl überprüft, ob eine Schwarz-Weiß-.tiff-Datei ggf. "leer" ist, also keine verwertbaren Informationen für eine Texterkennung o.ä. beinhaltet, und dementsprechend von weiterer Verarbeitung ausgeschlossen werden kann. Es lassen sich Rahmen festlegen, innerhalb derer geprüft wird, sowie die Schwelle in Prozent, unterhalb der ein Bild als "leer" angesehen wird. Die Syntax lautet:
empty-page [-i|--input INPUT] [-m|--margin MARGIN] [-p|--percentage PERCENTAGE]
Mit bardecode
können Barcodes auch dann gelesen werden, wenn die Qualität der Codes zu wünschen lässt, also bei niedrigen Kontrasten, verschobene Streifen etc. (Beispiele auf der Projektseite ).
Folgende Optionen können mit dem Befehl verwendet werden:
bardecode-Optionen | |
Option | Funktion |
-c|--concurrent-lines NUMBER | Anzahl der Zeilen, die zusammenhängend gescannt werden sollen |
-d|--directions BITFIELD | Bitfield-Scan-Richtung (mögliche Werte 0 keine, 1 links-nach-rechts,2 oben-unten, 4 rechts-nach-links, 8 unten-oben, 15 jede Richtung) |
-s|--line-skip NUMBER | Anzahl der zu überspringenden Zeilen |
-t|--threshold VALUE | Schwellwert für Bi-level-Daten |
Der Befehl:
bardecode Beispiele/*
liest alle im Verzeichnis Beispiele vorliegenden Dateien aus; das Ergebnis könnte z.B. so aussehen:
Beispiele/1.tif: XDM152EU-U [type: code39 at: (1094,392)] Beispiele/2.tif: 471186080198 [type: ean13 at: (1148,32)] Beispiele/3.tif: 06396500104997 [type: code128 at: (578,83)]
Die Ausgabe zeigt den ausgelesenen Inhalt, die Art des Codes und die Position im Bild.
ImageMagick liefert eine Vielzahl von Bearbeitungsoptionen, ist aber in einigen Bereichen sehr viel langsamer bei der Berechnung.
unpaper ist speziell für die Bearbeitung von gescannten Vorlagen zur Erstellung von z.B. PDF-Dateien konzipiert
Digital Photography Tutorials , Sammlung von grundlegenden Erklärungen und Anleitungen rund um digitale Bilder
pdfocr - Programm zur automatisierten Erstellung von "Sandwich-PDFs" auf Basis von Cuneiform-Linux und hocr2pdf
pdfsandwich - weiteres Programm zum automatisierten Erstellen von "Sandwich-PDFs", liefert momentan bessere Ergebnisse als pdfocr