[[Vorlage(Getestet, focal]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [https://exactcode.com/opensource/exactimage/ ExactImage] {en} ist eine Sammlung von Kommandozeilen-Werkzeugen zur Bearbeitung von Grafik-Dateien. Sie wurde von der Firma [https://www.exactcode.com/ ExactCODE] {en} als Alternative zu [:ImageMagick:] für [https://www.archivista.ch/de/ 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 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 {{{#!vorlage Paketinstallation exactimage, universe }}} = 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. '''PDF'''s 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: ||<-2 rowclass="titel"> ExactImage-Programme || || Aufruf || Funktion || || [#econvert `econvert`] || Hauptbestandteil zum Konvertieren und Bearbeiten von Bilddateien || || [#optimize2bw `optimize2bw`] || konvertiert und bearbeitet Graustufen- und farbige Vorlagen zur Archivierung in [wikipedia_en:List_of_monochrome_and_RGB_palettes#Monochrome_.281-bit.29:1-bit-monochrome] (schwarz-weiß) || || [#hocr2pdf `hocr2pdf`] || zum Erzeugen von "durchsuchbaren" [:PDF:]-Dateien || || [#edentify `edentify`] || liefert Informationen zu Bilddateien (Größe, Auflösung, Farbraum, Kanäle) || || [#e2mtiff `e2mtiff`] || konvertiert unterstützte Formate in mehrseitige '''.tiff'''-Dateien || || [#empty-page `empty-page`] || erkennt leere Seiten, um sie von weiterer Bearbeitung ausschließen zu können || || [#bardecode `bardecode`] || zum Auslesen von [wikipedia_en:barcode:Barcodes] || Zu jedem Programmteil existiert eine [:man:Manpage], die weitere Informationen liefert. == econvert == `econvert` ist der Hauptbestandteil des Programm. Es lehnt sich an die "[:ImageMagick#convert:convert]"-Syntax an, ist in der Handhabung aber einfacher. Die allgemeine Syntax lautet[2]: {{{#!vorlage Befehl 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, [wikipedia: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: {{{#!vorlage Befehl 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-[wikipedia_en:JPEG#Discrete_cosine_transform: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 [:man: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: {{{#!vorlage Befehl optimize2bw [-OPTION] -i|--input FILE -o|--output FILE }}} Folgende Optionen stehen zur Verfügung: ||<-2 rowclass="titel"> 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 [wikipedia:HOCR_(Standard):hOCR]-Format vorliegenden Dateien (einem "informationsreichen" HTML-Format, welches z.B. das OCR-Programm [:Cuneiform-Linux:] oder [:tesseract-ocr: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 [https://www.auxnet.de/wp-content/uploads/2009/04/Fernberger01.pdf auxnet.de] {dl}). {{{#!vorlage Hinweis Leider funktioniert die hOCR-Funktion in Cuneiform Version 0.9.0 und höher im Zusammenspiel mit [#hocr2pdf 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 [:Cuneiform-Linux#Manuelle-Installation: 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 [:Trusty:Ubuntu 14.04]) dasselbe Phänomen wie unter Cuneiform auf: Überdimensionierte Textlagen, z.T. verschwinden ganze Textteile. }}} {{{#!vorlage Hinweis Unter Focal Fossa nicht getestet. }}} Die Syntax des Befehls lautet: {{{#!vorlage Befehl hocr2pdf [-OPTION] -i [EINGABE_DATEINAME.ENDUNG] -o AUSGABE_DATEINAME.pdf < EINGABE-DATEINAME.html/hocr }}} Folgende Optionen können mit hocr2pdf verwendet werden: ||<-2 rowclass="titel"> 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: {{{#!vorlage 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl empty-page [-i|--input INPUT] [-m|--margin MARGIN] [-p|--percentage PERCENTAGE] }}} == bardecode == Mit `bardecode` können [wikipedia_en:barcode: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: ||<-2 rowclass="titel"> bardecode-Optionen || || Option || Funktion|| ||`-c|--concurrent-lines NUMBER`|| Anzahl der Zeilen, die zusammenhängend gescannt werden sollen || ||`-d|--directions BITFIELD`||[wikipedia_en: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 [wikipedia_en:Bi-level:]-Daten || Der Befehl: {{{#!vorlage 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: {{{#!vorlage Befehl for FILE in `ls ~/Bilder1`; do econvert -i "~/Bilder1/$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 = Links = * [https://exactcode.com/opensource/exactimage/ Projektseite] {en} * [https://www.cambridgeincolour.com/tutorials.htm Digital Photography Tutorials] {en}, 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 #tag: Grafik, Shell, Bildung, Büro, Kommunikation