ubuntuusers.de

ExactImage

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

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png 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.

Installation

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

  • exactimage (universe)

Paketliste zum Kopieren:

sudo apt-get install exactimage 

Oder mit apturl installieren, Link: apt://exactimage

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[2]:

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 ⮷).

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

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.

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.

Massenverarbeitung

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.

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

  • Projektseite 🇬🇧

  • 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

  • djvu2pdf - auch hier kommt hocr2pdf zum Einsatz, um eine aus DjVu-Daten extrahierte hOCR-Datei in ein PDF einzubinden

Diese Revision wurde am 17. Februar 2020 12:07 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Bildung, Shell, Kommunikation, Grafik, Büro