ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

ExactImage

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

ExactImage {en} ist eine Sammlung von Kommandozeilen-Werkzeugen zur Bearbeitung von Grafik-Dateien. Sie wurde von der Firma ExactCODE {en} als Alternative zu ImageMagick für Archivista {ch} 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.

Installation

Das Programm ist in den Paketquellen vorhanden, installiert[1] werden muss das Paket

  • exactimage

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install exactimage 

sudo aptitude install exactimage 

Manuell

ExactImage wird noch aktiv weiterentwickelt. Es lohnt daher ggf., den Quellcode selbst zu kompilieren. Der Quellcode kann von der Downloadseite {dl} 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.

Unterstützte Formate

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.

Bestandteile

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

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.

optimize2bw

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

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 {dl}).

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 {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.

Hinweis:

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.

moz-hOCR-edit

Zur Korrektur von hOCR-Dateien gibt es ein Firefox-Plugin {en}, 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

Wiki/Vorlagen/Installbutton/button.png 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

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.

e2mtiff

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.

empty-page

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] 

bardecode

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 {en}).

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 BITFIELDBitfield-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.

Alternativen

  • 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

ubuntuusers.local › WikiExactImage