Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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 Vorbereitung zur 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 wurde längere Zeit aktiv weiterentwickelt. Es lohnte 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]. In Trusty liegt allerdings bereits Version 0.8.9 vor, die auf der Projektseite gar nicht mehr aufgeführt wird.
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 ).
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 ab Version 3.02 kann ebenfalls hocr/html-Ausgaben produzieren, die weitgehend kompatibel mit hocr2pdf sind. Leider tritt aber auch hier ab Version 3.03 (Standard in Ubuntu 14.04) dasselbe Phänomen wie unter Cuneiform auf: Überdimensionierte Textlagen, z.T. verschwinden ganze Textteile.
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.
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.
Um Bilddateien ordnerweise zu bearbeiten, benutzt man ein Schleifenkonstrukt. Beispiel:
for FILE in `ls ~/Bilder1/*.jpg`; do econvert -i "$FILE" --scale 0.5 -o "~/Bilder2/${FILE/.jpg/_klein.png}"; done
Es werden alle JPG-Dateien des Ordners ~/Bilder1 auf 50% der Originalgröße skaliert und im Ordner ~/Bilder2 gespeichert. Der Dateiname wird um _klein ergänzt und als Format .png verwendet.
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
xsane2sandwich - Wrapper, um aus XSane heraus direkt durchsuchbare PDF-Dateien zu erstellen, verwendet hocr2pdf
djvu2pdf - auch hier kommt hocr2pdf zum Einsatz, um eine aus DjVu-Daten extrahierte hOCR-Datei in ein PDF einzubinden
Diese Revision wurde am 28. August 2016 18:53 von Heinrich_Schwietering erstellt.