[[Vorlage(Getestet, bionic)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Packprogramme: Archive entpacken] [:Terminal: Ein Terminal öffnen] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] [:Editor: Einen Editor öffnen] [:Rechte: Rechte für Dateien und Ordner ändern] }}} [[Inhaltsverzeichnis()]] [[Bild(./cuneiform.png, 80, left)]] [launchpad:cuneiform-linux:Cuneiform] {en} ("Keilschrift") ist ein sehr ausgereiftes russisches [wikipedia:Texterkennung:OCR]-Programm, das ursprünglich für Windows entwickelt wurde und z.T. unter Open-Source-Lizenz steht. Seit 2008 wird an einer [launchpad:cuneiform-linux:Cuneiform-Linux-Portierung] {en} gearbeitet, die sehr gute Ergebnisse liefert. Unterstützt wird eine Vielzahl von Sprachen, als Eingabedateien können alle gängigen Bild-Formate verwendet werden, die Ausgabe kann in verschiedenen Text-Formaten, oder auch in [wikipedia:html:] erfolgen. Es handelt sich um eine Kommandozeilen-Programm; eine Integration in z.B. [:XSane:] ist aber möglich. = Installation = Cuneiform-Linux ist in den Paketquellen vorhanden, es muss das Paket {{{#!vorlage Paketinstallation cuneiform, multiverse }}} installiert[1] werden. == Manuelle Installation == {{{#!vorlage Hinweis Derzeit funktioniert Cuneiform-Linux nur auf Computern mit x86 und amd64-Prozessoren! }}} Um Cuneiform-Linux selbst erstellen zu können, werden folgende Pakete benötigt[1]: {{{#!vorlage Paketinstallation cmake }}} Vor der Installation sollte das Paket '''cuneiform-common''' entfernt werden, dessen Inhalt ist in der selbstkompilierten Version von Cuneiform enthalten. Der Quellcode der aktuellen Version kann als '''tar.gz'''-Archiv von der [launchpad:cuneiform-linux:Projektseite] {en} heruntergeladen werden. Das Archiv entpacken[2] und das Programm kompilieren. Dazu im Terminal[3] in den entstandenen Cuneiform-Linux-Ordner wechseln und dort {{{#!vorlage Befehl mkdir cuneiform-linux-x.x.x cd cuneiform-linux-x.x.x cmake -DCMAKE_BUILD_TYPE=relwithdebinfo .. ## Die Punkte und das Leerzeichen davor sind wichtig! }}} durchführen ("`x.x.x`" steht dabei für die verwendete Version). Das Programm wird damit mit Optimierungen und Debugging-Symbolen kompiliert, dann normal[4] erstellen und installieren. [[Vorlage(Fremd, Software)]] Nach Installation muss ein {{{#!vorlage Befehl sudo ldconfig }}} durchgeführt werden, wenn die in '''/usr/local/lib''' erstellten Bibliotheken beim Programmstart nicht gefunden werden. = Bedienung = Die allgemeine Syntax für Cuneiform-Linux auf der Kommandozeile lautet {{{#!vorlage Befehl cuneiform -l [SPRACHE] -f [FORMAT] -o [AUSGABE-DATEI] ([EXTRAOPTIONEN]) [BILDDATEI] }}} Dabei stehen die Optionen für die Sprache des Eingabedokuments (`-l`), das Ausgabeformat (`-f`) und den Namen der Ausgabe (`-o`). Außerdem können weitere spezielle Optionen verwendet werden, `--dotmatrix` zum Erkennen von Vorlagen, die mit Nadeldruckern erstellt wurden, `--fax` für Faxvorlagen, sowie `--singlecolumn` für Vorlagen, die nur einspaltig eingelesen werden sollen. Das Kommando wird mit dem Dateinamen der zu verarbeitenden Vorlage abgeschlossen. Cuneiform-Linux ist in der Lage, Spalten zu erkennen, und die Vorlagen entsprechend aufzuarbeiten, so dass Text in Spalten tatsächlich von Spalte zu Spalte erfasst und entsprechend fortlaufend abgespeichert wird. Die Originalversion kann auch problemlos Tabellen erkennen und wiedergeben; dieses Merkmal ist allerdings in der Linux-Portierung momentan nicht implementiert (siehe [bug:260327:]). == Sprachen == Standardmäßig werden Texte in englischer Sprache/Zeichensatz zugrunde gelegt; möglich sind folgende Sprachen/Zeichensätze: ||<-8 tablestyle="width: 97%" rowclass="titel"> unterstützte Sprachen || || Option || Sprache || ||Option || Sprache || ||Option || Sprache || ||`eng`|| englisch || ||`ger`|| deutsch || ||`fra`|| französisch || ||`rus`|| russisch || ||`swe`|| schwedisch || ||`spa`|| spanisch || ||`ita`|| italienisch || ||`tur`|| türkisch || ||`ukr`|| ukrainisch || ||`srp`|| serbisch || ||`hrv`|| kroatisch || ||`pol`|| polnisch || ||`dan`|| dänisch || ||`por`|| portugiesisch || ||`dut`|| niederländisch || ||`cze`|| tschechisch || ||`rum`|| rumänisch || ||`hun`|| ungarisch || ||`bul`|| bulgarisch || ||`slo`|| slowenisch || ||`lav`|| lettländisch || ||`lit`|| litauisch || ||`est`|| estländisch || ||`ruseng`||zweisprachig russisch/englisch || Allerdings existiert anders als bei [:tesseract-ocr:] keine Möglichkeit, zur Verbesserung der Ergebnisse die Zeichenerkennung zu trainieren, oder neue Sprachen hinzuzufügen. == Ausgabeformate == ||<-3 rowclass="titel"> unterstützte Ausgabeformate|| || Option || Format || Kurzbeschreibung || || `html` || [wikipedia:Hypertext_Markup_Language:HTML] Format ||"webfähige" Version mit Bildern und ansatzweiser Schriftarten-Erkennung || || `hocr` || [wikipedia:HOCR_(Standard):hOCR] HTML Format || wie "`html`", aber mit zusätzlichen unsichtbaren Informationen, allerdings keine exakte Layout-Wiedergabe; z.B. zum Erstellen von [#PDF-Erstellung-mit-hocr2pdf Sandwich-PDFs] geeignet || || `native` || Cuneiform 2000 Format || unter Ubuntu nicht nutzbar; es entstehen unlesbare '''.tga'''-Dateien || || `rtf` || [wikipedia:Rich_Text_Format:RTF]-Format || einfache Layout-Erkennung; erzeugt formatierte Text-Dateien mit Spaltenerkennung, unterschiedlichen Schriftgrößen und -arten; keine Grafiken, statt dessen Platzhalter-Absätze || || `smarttext` || Nur-Text mit [wikipedia:TeX:TeX]-Absätzen || reiner Text mit exakten Zeilenumbrüchen wie in der Vorlage, Absätze bei größeren Zeilenabständen || || `text` || Nur-Text || reiner Text mit Absatzumbrüchen bei größerem Abstand zwischen den Zeilen/Absätzen; wird verwendet, wenn keine Option angegeben wird || == Beispiele == {{{#!vorlage Tabelle [[Bild(original.png, 170)]] [[Bild(html.png, 170)]] [[Bild(hOCR.png, 170)]] [[Bild(rtf.png, 170)]] [[Bild(smarttext.png, 170)]] [[Bild(text.png, 170)]] +++ <:>"Original.png" <:>'"`html` in firefox" <:>"`hocr` in firefox" <:>'"`rtf` in OpenOffice" <:>"`smarttext` in gedit" <:>"`text` in gedit" }}} Die Beispiele (alle mit xsane2cunei erstellt) zeigen, in welchem Qualitätsrahmen sich die Erkennung abspielt. Die reine Texterkennung ist sehr hoch, Schwierigkeiten treten ggf. bei Zahlen im Text auf. Die Spaltenerkennung ist gelegentlich nicht zuverlässig, manchmal scheint als erstes der kürzeste Absatz ausgelesen, und dann der jeweils nachfolgende Absatz (vertikal gesehen, unabhängig von der Spalte, in der er sich befindet) angeschlossen zu werden (im Beispiel allerdings exakte Erkennung). Im einfachen Textformat ist nicht immer klar, wann eine neue Zeile begonnen wird, und wann nicht; `smarttext` ist da eindeutiger. Die Layout-Erkennung ist im '''.rtf'''-Format akzeptabel, allerdings werden die Schriftgrößen/Arten z.T. unzuverlässig erkannt. Die '''.html'''- und '''.hOCR'''-Ausgaben sind äußerlich fast identisch; in den '''.hOCR'''-Dateien sind aber weitere Informationen zum Layout, Grafik etc. "unsichtbar" gespeichert, die '''.hOCR'''-Datei ist auch ca. 12mal so groß wie die '''.html'''-Version (zu hOCR siehe auch [github:tmbdev/hocr-tools:README] {en}). = Einbindung in XSane = [[Bild(XSane/xsane-logo.png, 56, left)]] Auch Cuneiform-Linux lässt sich, wie [:tesseract-ocr#xsane2tess:tesseract-ocr], mittels eines Skriptes direkt aus [:XSane:] heraus verwenden. Das folgende Skript in einen Editor[5] kopieren, unter einem aussagekräftigen Namen, z.B.'''xsane2cunei.sh''' abspeichern und ausführbar[6] machen: {{{#!code bash #!/bin/bash # # ############################################################################### # # # xsane2cunei 0.3 # # # # *** cuneiform made simple *** # # # # ############################################################################### # # xane2cunei is a wrapper to be able to use Cuneiform-Linux with XSane # # # TEMP_DIR=~/tmp/ # folder for temporary files ERRORLOG="xsane2cunei.log" # file where STDERR goes if [[ -z "$1" ]] then echo "Usage: $0 [OPTIONS] xsane2cunei scans image files with XSane, recognizes the text using cuneiform-linux and outputs the text in a file. OPTIONS: -i define input file (any image-format supported) -o define output file (txt, html, hocr, rtf) -l define the language used for recognition -f define the format used for output -e optional: dotmatrix, fax, singlecolumn Progress- & error-messages will be stored in this logfile: $TEMP_DIR$ERRORLOG xsane2cunei depends on - XSane http://www.xsane.org/ - libmagick-++dev http://www.imagemagick.org/ - cuneiform-linux https://launchpad.net/cuneiform-linux Cuneiform-Linux Some coding was stolen from 'ocube' http://www.geocities.com/thierryguy/ocube.html This Cuneiform adaption is based on xsane2tess http://doc.ubuntu-fr.org/xsane2tess, Hints always welcome! heinrich (dot) schwietering (at) gmx (dot) de " exit fi # get options... while getopts ":i:o:l:f:e:" OPTION do case $OPTION in i) # input filename (with path) FILE_PATH="$OPTARG" ;; o ) # output filename FILE_OUT="$OPTARG" ;; l ) # recognition language LANGUAGE="$OPTARG" ;; f ) # output format FORMAT="$OPTARG" ;; e ) # extra option format EXTRA="$OPTARG" ;; esac done # redirect STDOUT to FILE_OUT exec 1>>$FILE_OUT # redirect STDERR to ERRORLOG exec 2>>$TEMP_DIR$ERRORLOG # strip path from FILE_PATH, use filename only IN_FILE="${FILE_PATH##*/.*}" # start OCR cuneiform -l "$LANGUAGE" -f "$FORMAT" -o "$FILE_OUT" "--$EXTRA" "$IN_FILE" 1>&2 }}} Das Skript ist eine Anpassung des xsane2tess-Skriptes, das auf [http://doc.ubuntu-fr.org/xsane2tess ubuntu-fr.org] {fr}, der französischen Ubuntu-Seite, veröffentlicht worden ist. Das Temporärverzeichnis (Zeile 15) muss entweder angelegt, oder entsprechend der eigenen Wünsche abgepasst werden, dort wird auch die '''xsane2cunei.log'''-Datei abgelegt. In ''"XSane -> Einstellung -> Konfiguration -> Texterkennung"'' wird als OCR-Befehl ''"/Pfad/zu/xsane2cunei.sh -l -f -e "'' eingesetzt, die Angaben für die Sprache und das Format, und wenn gewünscht für Extra-Optionen, werden jeweils eingetragen (ohne Angaben wird die Vorlage als englischer Text verarbeitet und im einfachen '''.txt'''-Format ausgegeben). Als Option für die Eingabedatei werden ''"-i"'', für die Ausgabedatei ''"-o"'' angeben, die weiteren Felder bleiben leer. Die Vorlage wird in XSane im Betrachter-Modus als ''"Strichzeichnung"'' mit einer Auflösung von 300 dpi erstellt. Im Betrachter die Texterkennung ([[Bild(xsane/xsane-ocr.jpg, 18)]]-Taste) wählen, der Ausgabename mit entsprechender Endung wird im OCR-Speicher-Dialog festgelegt. Es lassen sich auch mehrerer Scans zu einer Datei aneinander hängen, wenn zum Abspeichern der selbe Name verwendet wird. Alternativ kann auch als Speicherformat ''"TEXT"'' angegeben werden, damit lässt sich der "Umweg" über den Betrachter-Modus umgehen und direkt eine Textdatei anlegen. Falls Probleme auftauchen, liefert das angelegte Protokoll '''xsane2cunei.log''' ggf. Hinweise zur Lösung. Wenn Cuneiform-Linux beim Konvertieren mit einer Meldung "`*** buffer overflow detected ***: cuneiform terminated`" und nachfolgendem Backtrace abstürzen sollte, ist ggf. die Auflösung für den Scanvorgang zu hoch gewählt. == cuneiform-qt == [:cuneiform-qt:] ist ein einfaches Frontend zum Auslesen von '''PNG''', '''JPG''', '''BMP''' und '''TIF'''-Dateiformaten, das Cuneiform-Linux verwendet. = PDF-Erstellung = {{{#!vorlage Warnung Mit Version 0.9.0 wurde das Format zur hOCR-Erstellung in Cuneiform verändert, sodass das Zusammenspiel mit hocr2pdf nicht mehr funktioniert. Es entstehen z.T. überdimensioniert formatierte Textausgaben in den erstellten PDF-Dokumenten, Teile der Ausgabe können in der PDF-Datei nicht abgebildet und gespeichert werden. Eine Lösung für das Problem ist nicht bekannt. Als Alternative kann [:gscan2pdf:] mit [:tesseract-ocr:] verwendet werden, auch für [:pdfsandwich:] gibt es inzwischen eine Variante mit tesseract-ocr. }}} Mit in Cuneiform-Linux erstellter Texterkennung im '''.hOCR'''-Format lassen sich in Verbindung mit [:ExactImage#hocr2pdf:hocr2pdf] sog. Sandwich-PDFs erstellen, die nach Wörtern durchsuchbar sind. Dabei wird das verwendete Bild mit dem Ergebnis der Texterkennung "übereinander" gelegt; der Text ist durchsuchbar und (bei entsprechend "exakter" Passung) kann der Suchbegriff im "Bild" angezeigt werden (ein einfaches Beispiel findet sich auf [http://www.auxnet.de/wp-content/uploads/2009/04/Fernberger01.pdf www.auxnet.de] {dl}). hocr2pdf ist Bestandteil der Programm-Suite [:ExactImage:], das in den offiziellen Paketquellen enthalten ist (Paket '''exactimage'''). Der Code kann aber auch von [http://dl.exactcode.de/oss/exact-image/ exactcode.de] {dl} bezogen und das ExactImage-Programm daraus kompiliert werden. Die Erstellung des Sandwich-PDFs erfolgt dann im Terminal mit {{{#!vorlage Befehl hocr2pdf -i EINGABE-DATEINAME.ENDUNG -o AUSAGEBE-DATEINAME.pdf -s < EINGBE_DATEINAME.html }}} Auf dieser [http://blog.beimax.de/2009/05/11/automatisches-skript-fur-cuneiform-und-hocr2pdf/ Blog-Seite] {de} kann ein einfaches Skript bezogen werden, was den Vorgang automatisiert. == pdfocr == Noch komfortabler gestaltet sich die Erstellung durchsuchbarer PDF-Dateien mit [:pdfocr:]; allerdings müssen die Vorlagen dazu bereits im PDF-Format vorliegen. Das Programm greift zur Texterkennung auf Cuneiform-Linux zurück; außerdem kommen hocr2pdf sowie [:PDF#pdftk:pdftk] und [:poppler-utils#pdfimages:pdfimages] zum Einsatz. == pdfsandwich == [:pdfsandwich:] beschreitet einen ganz ähnlichen Weg; es lassen sich auch keine PDF-Dateien erstellen, sondern nur bestehende um die Textlage erweitern. Ursprünglich für cuneiform konzipiert (und damit nur bis Version 0.8.0 sinnvoll verwendbar), existiert inzwischen auch eine Version für tesseract-ocr 3.0x. = Alternativen = Weitere Programme sind unter [:Texterkennung#OCR-Programme: Texterkennung] {Übersicht} aufgeführt; auf ähnlichem Niveau befinden sich eigentlich nur * [:tesseract-ocr:] Ein aus einer von HP entwickelten kommerziellen Software hervorgegangenes Projekt, das vor allem von Google für die Erstellung von e-books weiter entwickelt wird. Die Texterkennung ist auf ähnlich hohem Niveau; zusätzlich kann tesseract-ocr auch für weitere Sprachen angelernt werden. * [http://www.archivista.ch/de/ Archivista] {ch} Sehr ausgereifte, kommerziell entwickelte, aber unter Open-Source-Lizenz stehende Komplettlösung zum "papierlosen" Büro. = Links = * [launchpad:cuneiform-linux:Cuneiform-Linux] {en} auf launchpad.net * [launchpad:~cuneiform:Cuneiform-Linux-Mailinglist] {en} auf launchpad.net * [http://www.auxnet.de/cuneiform-und-hocr2pdf-unter-ubuntulinux-installieren-und-einsetzen hocr2pdf-Anleitung] {de} * [github:tmbdev/hocr-tools:hOCR-Tools] {en} * [http://www.archivista.ch/de/media/ocr2.pdf Archivista-Dokumentation zu ocr2pdf] {dl} #tag: Grafik, Multimedia, Büro, Kommunikation, OCR, Texterkennung