Cuneiform und hocr2pdf unter Ubuntu/Linux installieren und einsetzen
Im Linux-Magazin 03/2009 war ein guter Artikel zum Thema OCR unter Linux mit Hilfe von cuneiform, tesseract und anderen Programmen. Allerdings fehlte ein einfacher Einstieg zum Thema, den ich hier kurz für Ubuntu beschreiben will.
Edit: Seit der Erstveröffentlichung des Artikels hat sich einiges getan. cuneiform und hocr2pdf sind beide in Ubuntu 10.04 vorhanden, für das Erstellen von Sandwhich-PDFs gibt es ein Tool auf der Seite http://pdfsandwich.origo.ethz.ch/.
cuneiform
Das OCR-Programm cuneiform benötigt einige Pakete für das Holen und Kompilieren der Sources:
sudo apt-get install bzr cmake build-essential
(Falls es noch weitere Pakete braucht, bitte mir Bescheid sagen und ich füge sie hinzu. Hinweis aus dem Kommentaren: Es kann zu Fehlern in der Kompilierung führen, wenn die Pakete libmagick++1 oder libmagick++-dev nicht installiert sind — bitte bestätigen!)
Unter Hardy Heron muss im Übrigen ein Backport von cmake installiert werden! Diesen findet man auf der Seite https://launchpad.net/ubuntu/hardy/i386/cmake/. Dort kann man links oben unter “Package releases” die neuen Backports auswählen (Pakete findet man dann unter “Downloadable files”).
Nun suchen wir uns ein Installationsverzeichnis – ich nehme z.B. ~/devel, andere sinnvolle Namen wären bspw. ~/src oder ~/tmp, je nach Zielsetzung und Geschmack.
mkdir ~/devel
cd ~/devel
Die Sources für cuneiform holen wir mit folgendem Befehl:
bzr branch lp:cuneiform-linux
Das holt den Code von der launchpad/Bazaar-Plattform. Nun können wir mit dem Kompilieren beginnen:
cd cuneiform-linux
mkdir builddir
cd builddir
cmake ..
make
sudo make install
Falls hier Fehler auftauchen, müssen ggf. noch Pakete nachinstalliert werden. Einfach bei mir melden! Der letzte Befehl installiert die Dateien von cuneiform unter /usr/local.
Mit einem echo $PATH kann man prüfen, ob /usr/local/bin im Pfad angegeben ist. Falls nicht, kann man folgende Zeilen in der Datei ~/.profile hinzufügen:
# set PATH so it includes /usr/local/bin if it exists
if [ -d "/usr/local/bin" ] ; then
PATH="/usr/local/bin:$PATH"
fi
Anmerkung: Es ist gegebenenfalls sinnvoll, statt /usr/local/bin z.B. ~/bin zu nehmen. Damit ist das Programm nur für den Benutzer ausführbar, hat aber den Vorteil, dass keine administrativen Rechte bei der Installation nötig sind. Dazu muss man im Makefile die Pfadnamen entsprechend ändern und den $LD_LIBRARY_PATH auf einen Pfad im Home-Verzeichnis setzen (dazu muss man dieses vorher natürlich anlegen und in der Installation entsprechend durchführen).
Gleiches gilt für die Libraries. Mit echo $LD_LIBRARY_PATH sollte man prüfen, ob /usr/local/lib im Pfad ist. In meiner Ubuntu-Version (8.04) war das noch nicht der Fall. In diesem Fall ist es vielleicht ratsam in der Datei ~/.bashrc folgende Zeile hinzuzufügen:
#Include local libs
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
Edit: Bei 64-Bit-Systemen lautet der Pfad /usr/local/lib64.
Damit sollte nach einem erneuten Öffnen eines Terminalfensters das Aufrufen von cuneiform ohne Probleme vonstatten gehen:
max@compi:~$ cuneiform
Cuneiform for Linux 0.6.0
Usage: cuneiform[-l languagename -f format --dotmatrix --fax -o result_file] imagefile
Edit: cuneiform ist seit Ubuntu 10.04 im Standard-Repository vorhanden (Version 0.7) und kann also mit Hilfe von sudo apt-get install cuneiform installiert werden.
Durchsuchbare PDFs mit hocr2pdf von Exactimage
Das ist nun etwas richtig cooles: PDFs erstellen, die den eingescannten Originaltext darstellen, gleichzeitig jedoch durchsuchbar sind! Wieder brauchen wir entsprechende Pakete:
sudo apt-get install subversion build-essential libagg-dev libevas-dev libtiff-dev libjpeg-dev libpng-dev libungif4-dev
(Auch hier wieder: Bitte weitere benötigte Pakete mitteilen)
Die Pakete holen wir uns wieder aus dem Internet:
mkdir ~/dev/hocr2pdf
cd ~/dev/hocr2pdf
svn co svn.exactcode.de/exact-image/trunk
cd trunk
Das Compilieren und Installieren geht klassisch von der Hand:
./configure
make
sudo make install
Die entsprechenden Dateien sind wieder unter /usr/local installiert.
Weitere Anmerkung: Im Moment klappt das Kompilieren von hocr2pdf leider nicht, da ein Fehler in libagg auftaucht. Falls jemand eine Lösung hat, bitte ich um Hinweise.
Anmerkung: Unter Ubuntu Karmic (9.10) existiert nun ein Debian-Paket für hocr2pdf. Der Paketname lautet exactimage.
Leider gibt es damit im Moment ebenfalls ein Problem: Die Extraktion des Textes mit cuneiform funktioniert wunderbar. Beim Erstellen des Sandwich-PDFs werden die Zeichen jedoch riesig gesetzt, so dass die Suche und das Kopieren von Text aus dem PDF nicht wirklich funktionieren. Für Hinweise bin ich dankbar.
Update: Eine Anleitung zur Installation der Version 1.0 von cuneiform-linux in Ubuntu befindet sich unter: http://wiki.ubuntuusers.de/Baustelle/pdfsandwich. Leider scheint auch diese Version das Problem der großen Schriften nicht zu beheben.
Sandwich-PDF erstellen
Als Beispiel habe ich einen PNG-Text genommen, den ich irgendwann einmal eingescannt habe, einen Teil von Fernbergers Reisebericht am Ende des 16. Jahrhunderts über die Insel Hormuz (Quelle: Fernberger, Georg Christoph: Reisetagebuch (1588-1593) Sinai, Babylon, Indien, Heiliges Land, Osteuropa. Lateinisch-Deutsch. Kritische Edition und Übersetzung von Ronald Burger und Robert Wallisch (Beiträge zur Neueren Geschichte Österreichs, Bd. 12), Frankfurt a. M. 1999).
Wie bekomme ich aus diesem Text nun ein durchsuchbares PDF?
Um die Eingangsdatei für cuneiform vorzubereiten, brauche ich imagemagick (alternativ: GIMP o.ä.):
sudo apt-get install imagemagick
Ich kann nun meine Datei entsprechend umwandeln:
convert Fernberger01.png BMP3:Fernberger01.bmp
Das BMP3 ist deshalb wichtig, weil cuneiform nur BMP-Dateien der Version 3 verträgt.
Nun können wir den OCR-Vorgang tatsächlich beginnen:
cuneiform -l ger -f hocr -o Fernberger01.html Fernberger01.bmp
Die Switches besagen, dass es sich um einen deutschen (ger) Text handelt, dass das Format als hocr exportiert werden soll und die Ausgabedatei Fernberger01.html heißen soll. Das Ergebnis kann man sich z.B. mit Firefox betrachten und ist sehr zufriedenstellend (Knackpunkt ist hier immer die Auflösung, denke ich – 300 DPI sollten es schon sein)!
Das PDF kann man nun mit Hilfe von hocr2pdf bauen:
hocr2pdf -i Fernberger01.bmp -o Fernberger01.pdf < Fernberger01.html
Heraus kommt ein schönes Sandwich-PDF! Alternativ kann man auch Fernberger01.png als Input-Datei nehmen, wenn die bmp-Vorlage zu schlecht ausfällt. Falls man die Leerzeichen zwischen den Wörtern entfernen will, kann man die Option -s einfügen. Das erleichtert das spätere Durchsuchen des PDFs.
Damit wäre die Basis erstellt – mit einigem Geschick kann man ein Skript schreiben, dass mehrere Seiten nacheinander umwandelt und in PDF zusammenfasst. Für letzteren Schritt bietet sich das Paket pdftk an.
- 59 Kommentare
Danke
zunächst großen dank für den artikel und die damit verbundene mühe! die infos sind gerade extrem hilfreich.
zwei dinge würde ich gern anmerken:
1.
die wahl eines verzeichnisnamens "dev" halte ich für außerordentlich problematisch. einmal das tilde vergessen und schon findet man sich im geräteschuppen wieder. und das womöglich noch mit root-rechten. "dev" ist semantisch mit geräten assoziiert und dabei sollte es m.e. auch bleiben. "devel" hingegen macht solcherlei - zugegebenermaßen esoterischen - probleme nicht.
2.
für .profile würde ich - wenn denn überhaupt nötig - empfehlen:
if [ -d "/usr/local/bin" ] ; then
PATH=”/usr/local/bin:$PATH”
fi
Danke!
Hallo Christian,
danke für die konstruktive Kritik! In beiden Dingen gebe ich dir Recht! Es macht natürlich keinen Sinn, das Verzeichnis "dev" zu nennen. "devel" oder "src" wären hier angebrachter. Der Zusatz zu .profile ist sinnvoll, da man ja nicht in jeder Distribution von der Existenz eines solchen Pfades ausgehen kann.
Ich werde den Artikel enstprechend ändern.
Max.
Probleme
Hallo Max,
ich habe nur hocr installiert. Das hat auch geklappt. Allerdings wird bei mir nur eine 1k große pdf Datei erzeugt und hocr2pdf kommt nichtmehr zurück.
Gruß
Peter
...
Hallo Peter,
ohne nähere Informationen kann ich dazu wenig sagen - cuneiform kümmert sich um die Texterkennung, hocr2pdf fügt lediglich die von der Texterkennung erstellte hocr-Datei (mit html-Endung) und das Grundbild zusammen. Hast du eine hocr-Datei mit einem anderen Programm erzeugt?
Max.
Automatisches Skript für die Konvertiertung
Automatisches Skript für die Konvertiertung:
http://www.auxnet.de/blog/blog-post/2009/05/11/automatisches-skript-fuer-cuneiform-und-hocr2pdf.html
Fehler gefunden
Fehler gefunden. Das compilieren der Quellen war an einer stellen nicht korrekt. Testen auf einer anderen Maschine dann solte es gehen.
Vielen Dank.
gruß
Peter
cmake
So jetzt läuft es aus dem Ruder. Ich habe Ubuntu 8.0.4 und bekommen beim cmake für cunei folgende Meldungen:
WARNING: This project requires version 2.6.0 of CMake. You are running version 2.4.7.
-- ImageMagick++ not found. Only uncompressed BMP images supported.
-- Adding __snp.c to individual libraries.
CMake Error: Error in cmake code at
/opt/cunei/cuneiform-linux/cuneiform_src/Kern/cstr/CMakeLists.txt:6:
Unknown CMake command "set_property".
-- Configuring done
Hat sich da was an cunei geändert??
Bei der Doku steht nichts von einer cmake Version 2.6.x. Desweiteren ist erstaunlich dass er "ImageMagick" nicht findet installiert ist es. Vielleicht bin ja jetz auf dem Holzweg.
Gruß
Peter
cmake
Hallo Peter,
stimmt, ohne cmake 2.6.0 läuft es nicht...
Auf launchpad findest du eine neue Version:
https://launchpad.net/ubuntu/hardy/i386/cmake/2.6.2-1ubuntu1~hardy1
bzw. direkter Download:
http://launchpadlibrarian.net/19616511/cmake_2.6.2-1ubuntu1%7Ehardy1_i386.deb
Damit sollte es funktionieren.
Bei ImageMagick könnte es sein, dass entweder das Paket libmagick++9-dev fehlt oder eine andere dev-Library. Ich glaube aber, dass es kein Beinbruch ist, wenn nur nicht-komprimierte BMPs unterstützt werden.
Hoffe, das hilft weiter.
libmagick
Unter Ubuntu 9.04 muss das Paket "libmagick++-dev" installiert werden
sudo apt-get install libmagick++-dev
Geholfen!
Hallo Max,
das hat geholfen. cunei ist kompiliert und funktioniert. Jetzt teste ich mal mit verschiedene Dateien.
gruß
Peter
Hallo!
Hallo!
Endlich eine Quelle für OCR Fragen, Danke schon mal!
Ich bekomme leider folgenden Fehler in Ubuntu 8.04, obwohl ich die 2.6.2 cmake Version verwende und Imagemagick installiert habe:
-- Could NOT find ImageMagick (missing: ImageMagick_FOUND)
-- ImageMagick++ not found. Only uncompressed BMP images supported.
-- Adding __snp.c to individual libraries.
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
ImageMagick_Magick++_LIBRARY
linked by target "cuneiform" in directory /opt/src/cuneiform-linux/cuneiform_src/cli
-- Configuring incomplete, errors occurred!
Kann mir auch jemand weiterhelfen? Leider funktioniert das "sudo make install" anschließend nicht.
Grüße! Petra
Hallo
Hallo Petra,
ok, ich vermute mal, dass hier noch ein Paket fehlt. Der Fehlermeldung nach sollte es eines der folgenden sein:
- libmagick++10
- libmagick10
- libmagick++-dev
- libmagick-dev
Ich würde mit dem ersten beginnen und dann noch einmal versuchen, zu installieren. Falls es nicht klappt, einfach das nächste Paket, etc. Über ein Feedback würde ich mich freuen, dann baue ich das noch in den Artikel ein.
Max.
svn checkout?
Hallo nochmal,
sollte es bei dem Abschnitt mit HOCR2PDF statt:
svn http://svn.exactcode.de/exact-image/trunk
nicht
svn checkout http://svn.exactcode.de/exact-image/trunk
heissen?
Grüße, Petra
Danke
Stimmt... Danke für den Hinweis!
Max.
/usr/local/lib64/
Bei mir konnte cuneiform das /usr/local/lib Verzeichniss nicht finden und meldet beim starten "cuneiform: error while loading shared libraries: libpuma.so: cannot open shared object file: No such file or directory".
Bei mir liegt es an meinem Ubuntu 9.04 64bit, da heißt der Pfad /usr/local/lib64.
Ein schneller Patch hilft ein "ln -s /usr/local/lib64/*.so /usr/lib64/" in der Konsole als root.
Quelle: https://bugs.launchpad.net/cuneiform-linux/+bug/345033
LD_LIBRARY_PATH
Hallo Stefan,
danke für den Hinweis. Vermutlich sollte es auch helfen, wenn man den Pfad zur Umgebungsvariable LD_LIBRARY_PATH hinzufügt:
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
Das kann man z.B. in der ~/.bashrc eintragen.
Max.
Tipp
Hallo Max,
das alles ist ziemlich großartig.
Noch besser wird das Ergebnis, wenn cuneinform mit der Option -s aufgerufen wird. So werden Leerzeichen zwischen den Buchstaben im erkannten Text entfernt, die ansonsten eventuell eingefügt würden und dann die Suche im Text erschweren.
Gruß,
Gunther
Danke für den Tipp!
Hallo Gunther,
danke für den Tipp - den kannte ich auch noch nicht!
Max.
Hallo
Hallo Max,
habe soeben diese Seite gefunden, großartig! Darf ich mal fragen:
Unter Jaunty kann ich cuneiform-linux-0.7 nicht installieren. Beim make heißt es:
[ 59%] Built target rshelllines
[ 59%] Building CXX object cuneiform_src/Kern/rline/CMakeFiles/rline.dir/sources/newline.cpp.o
In file included from /home/Download/cuneiform/cuneiform-linux-0.7/cuneiform_src/Kern/rline/sources/newline.cpp:60:
/usr/include/c++/4.3/fstream:109: Fehler: expected unqualified-id before »?« token
Hast Du einen Hinweis, was mir fehlt?
Danke, Detlef.
cmake
Hallo Detlef,
ein kurzer Blick ins Internet zeigt, dass dieser Fehler nicht ganz selten ist. Auf den ersten Blick würde ich sagen, dass es ein Problem zwischen cmake und gcc ist. Schau mal nach, welche gcc-Version dein cmake benötigt (aktuell wäre das ja evt. 3.4). Möglicherweise musst du das upgraden, sicher bin ich mir hierbei allerdings nicht.
Max.
cmake
Hallo Max,
vielen Dank. Die Hinweise im Internet hatte ich schon gesehen, aber sie zielen auf Programmierer ab, dazu gehöre ich nicht. Meine Versionen scheinen plausibel u. auch aktuell zu sein:
detlef@dpp:~$ cmake --version
cmake version 2.6-patch 2
detlef@dpp:~$ gcc --version
gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3
Schönen Gruß - Detlef.
Fehler
Hallo Detlef,
hm - ich habe das auf Jaunty ausprobiert und kann den Fehler nicht nachvollziehen. Schau mal, ob der Aufruf von cmake .. dir Hinweise gibt, welche Module noch fehlen.
Viele Grüße,
Max.
Vielen Dank
Hallo Max,
vielen Dank für die Mühen. Ich habe das Problem jetzt gelöst:
Beim Make-Lauf ignorierte ich die Warnung, ImageMagick+ sei nicht zu finden und es können nur bmp-Dateien verarbeitet werden. ImageMagick war installiert. Nach der Installation von ImageMagick+ (ImageMagick++1 in Ubuntu) lief der make-Lauf problemlos durch u. cuneiform ließ sich mit "sudo make install" installieren.
Schönen Gruß - Detlef.
Ok
Damit haben sich die Fragen geklärt - werde das explizit noch einmal im Artikel anmerken :-)
Max.
Links
Vor gut einem Jahr haben wir (Archivista) das Programm hocr2pdf (auf unsere Kosten, Copyright gemeinsam bei Archivista GmbH/Exactcode GmbH) programmieren lassen, damit wir mit der besten "freien" OCR-Erkennung auch durchsuchbare PDF-Dateien erstellen können. Es war für uns von Anfang an klar, dass hocr2pdf unter der gpl stehen soll und dass der Einsatz wo auch immer stattfinden können soll.
Cuneiform bzw. hocr2pdf wurden anlässlich des linuxday.at im Jahre 2008 ausführlich vorgestellt. Das Skript findet sich hier:
http://www.archivista.ch/de/media/ocr2.pdf
Darin findet sich auch eine Installationsanleitung, wie econvert, cuneiform und hocr2pdf installiert werden können. Ich denke, dass solche Anleitungen Sinn ergeben, wenn Power-User eine tolle Lösung zusammenstellen möchten.
Für alle die, welche einfach mal eine webbasierte OCR-Erkennung laufen lassen möchten, sei darauf hingeweisen, dass es dafür an sich die ArchivistaBox gibt. Es handelt sich um ein OpenSource DMS-Produkt, dass sowohl Tesseract als auch Cuneiform eingebunden haben. Die fertige ISO-Datei (virtualisiert zu installieren) kann bei sourceforge hier bezogen werden:
http://sourceforge.net/search/?type_of_search=soft&words=ArchivistaBox
Links
Hallo!
Danke für die Links. Stimmt, Archivista wurde seinerzeit auch im Artikel des Linux Magazins vorgestellt und klang sehr spannend!
Gerne bin ich an weiteren Hinweisen und Vorschlägen, auch zur Zusammenarbeit, interessiert.
Max.
Tolle Arbeit! Aber...
Hallo Max,
tolle Arbeit! Aber...
Linux heißt ja nicht nur Ubuntu. Hast Du auch mal an andere Distributionen gedacht? Jetzt z. B. die ganze Arbeit für openSUSE oder so umzustricken, muß vielleicht nicht sein. Kennst Du jemanden, der Dein Werk auf andere Distris umgestrickt hat?
Oder hast Du z. B. schon mal hiervon gehört
http://software.opensuse.org/search - cuneiform - 1-Click Install - sowohl für die Grunddatei, als auch für cuneiform-multilang, cuneiform-qt, cuneiform-multilang-debuginfo?
...und was hältst Du davon? Ich hoffe, ich bin nicht in der falschen Ecke der Linux- Distris gelandet...
Nette Grüße
Phoenix
Hinweis
Hallo Phoenix,
danke für den Hinweis! Klar, Linux ist nicht nur Ubuntu :-) Ich erhebe auch gar nicht den Anspruch, eine vollständige Anleitung schreiben zu wollen. Mein Ziel war hier, Hinweise und Lösungsvorschläge zu geben, indem ich ein Beispiel aufgegriffen habe und gezeigt habe, dass es dort funktioniert. Mit etwas Linux-Wissen kann man in der Regel dieses Beispiel auf seine spezifische Distribution umstricken. Für Hinweise in dieser Richtung bin ich dennoch immer dankbar!
Max.
Fehler
Hallo,
also ich bekomme folgende Fehler nach dem installieren von
bzr branch lp:cuneiform-linux
wget http://launchpadlibrarian.net/19616511/cmake_2.6.2-1ubuntu1%7Ehardy1_i386.deb
dpkg -i cmake_2.6.2-1ubuntu1~hardy1_i386.deb
apt-cache search libmagic
apt-get install libmagick10
apt-get install libmagick++-dev
#cmake cuneiform_src/
-- ImageMagick++ found at /usr/include.
-- Adding __snp.c to individual libraries.
CMake Error at Kern/ccom/CMakeLists.txt:9 (install_dll):
Unknown CMake command "install_dll".
CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as
cmake_minimum_required(VERSION 2.6)
should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring incomplete, errors occurred!
# cmake -version
cmake version 2.6-patch 2
# uname -a
Linux gw 2.6.27-7-server #1 SMP Tue Nov 4 20:18:35 UTC 2008 i686 GNU/Linux
Kann mir jemand sagen was da nicht geht ? (Wieso install_dll ?? Windows ??)
install_dll
Hm, klingt eigenartig, v.a. das mit "install_dll". Kann jemand den Fehler bestätigen?
Max.
Hallo, grossartiges howto!
Hallo, grossartiges howto! Es wird bei mir eine pdf-datei mit 4,5kB grösse erstellt, wenn ich diese öffne, baut sich ein leeres Blatt auf!
Keine fehlermeldung nach z.Bsp.: :/tmp$ hocr2pdf -i 001.bmp -o 001.pdf < 001.html
Grüsse, Tamás
NACHTRAG
NACHTRAG >> Die Grösse ist wohl nicht massgebend! Der Text wird in der PDF gespeichert, jedoch ist kein Bild in der Datei???
Fehlersuche
Hallo Tamás,
zur Fehlersuche versuche zuerst, mit cuneiform ein HTML zu erzeugen:
cuneiform -l ger -f hocr -o 001.html 001.bmpKannst du die HTML-Datei öffnen und wird Text korrekt extrahiert? Falls nein, stimmt etwas mit dem bmp oder der Textextraktion nicht.
Ansonsten könnte es am BMP-Format liegen - probiere mal, das bmp in ein JPG oder etwas anderes umzuwandeln...
Max.
Die html ist korrekt.
Die html ist korrekt.
Hatte ich bereits probiert undzwar mit JPEG, PNG, TIFF, wurde jeweils mit > "Error reading input file" quittiert!!
ERLEDIGT
ERLEDIGT... Des Rätsels Lösung war:
:$ apt-get install python-dev python2.5
hatte vorher immer ohne python gebaut
:~/hocr2pdf/trunk$ ./configure --prefix=/usr --without-python
Nun funzt es wunderbar. Trotz dessen vielen dank für die mühen.
Viele Grüsse
Tamás
Bildformate
Hi!
cuneiform kann so gut wie alle Bild-Formate verwenden (nicht nur .bmp, Version 3) wenn beim Kompilieren libmagick++-dev installiert ist; das erspart das Konvertieren der Dateien zu bmp.
Die Sandwich-PDF's funktonieren leider mit Bildern in den Vorlagen nur sehr eingeschränkt; ggf, kann man versuchen, auf das .rtf-Format auszuweichen,und die Bilder dort dann wieder einzubauen; ist allerdings recht mühsam...
Meine Erfahrungen bastele ich gerade zu einem Wiki-Artikel (http://wiki.ubuntuusers.de/Baustelle/Cuneiform) zusammen; das wird vermutlich noch weitere nach sich ziehen - das Thema fasziniert mich ziemlich! Interessant ist auch yagf (http://symmetrica.net/cuneiform-linux/yagf-en.html), ein GUI, das direkt XSane zum Scannen verwendet. Leider hat es noch keine hOCR-Unterstützung.
so long
hank
Tests
Ich habe jetzt auch einige Tests gemacht. TIFF funktioniert bei mir, solange ich es über convert (imagemagick) mache:
convert /tmp/input.tif /tmp/output-%04d.tif
Wenn ich es mit tiffsplit in die Einzelseiten zerlege, dann bekomme ich auch "error reading input file" - aber schon weil cuneiform dann nichts erzeugt (verwende übrigens cuneiform v0.8.0).
Original sollte ein TIFF G4 sein (aber ich wüsste nicht, mit welchem Tool ich das unter Linux jetzt überprüfen könnte - ob es wirklich G4 ist).
Am Ende sieht das PDF leider von der Bildqualität schlechter aus als das PDF - zumindest in Evince (Document Viewer). Wenn ich aber Foxit oder Adobe Acrobat Reader verwende, sieht das Bild gut aus - offensichtlich ist Evince nicht der Beste im PDF-Rendering - aber andere PDFs sehen auch im Evince ordentlich aus (nicht so "ausgefranst und kantig").
Alles andere außer TIF, also mit BMP3 oder PNG zu arbeiten bringt jedenfalls am Ende immer riesengroße PDF-Files, dh für mich fällt alles außer TIF flach, wenn ich ein Multipage TIFF in PDF mit OCR über convert, cuneiform und hocr2pdf convertieren will. Bei JPG gibt es mit v0.8.0 überhaupt einen page fault.
Was ich aber echt nicht kapiere: Wieso funktioniert es mit den single-page TIFFs, wenn ich convert verwende, aber nicht, wenn ich tiffsplit verwende, obwohl da doch scheinbar dasselbe dabei rauskommt.
Evince
Zu Evince: Das Rendering ist eigentlich gar nicht so schlecht, habe ich festgestellt. Dennoch unterscheidet sich bei gescannten Bildern die Bildschirmdarstellung von PDF Reader zu PDF Reader. Evince verwendet meines Wissens kein Anti-Alias beim Rendering von Bildern auf dem Bildschirm. Ich vermute allerdings, dass dies ein Feature und kein Bug ist. Der Ausdruck auf einem Drucke sollte bei allen PDF Readern natürlich gleich sein.
Danke für die Anmerkungen.
Max.
Ubuntu 9.10
unter Ubuntu 9.10 braucht man exactimage nicht mehr selbst zu kompilieren, es gibt dazu nen package im normalen repo.
habe ich rausgefunden nachdem ich etwa 15min lange versucht hab, das ding zu kompilieren, hat beim make immer fast sofort nen error erzeugt.
Re: Ubuntu 9.10
Stimmt, danke für den Hinweis!
Max.
Do it on SUSE !
Hallo zusammen :-)
hier eine Hilfestellung wie es unter Suse zu bewerkstelligen ist:
sudo zypper in bzrsudo zypper cmake
cd ~
sudo mkdir ~/devel
cd ~/devel
bzr branch lp:cuneiform-linux
zypper in -t pattern devel_C_C++
cd cuneiform-linux
mkdir builddir
cd builddir
cmake ..
make
sudo make install
sudo ln -s /usr/local/bin/cuneiform /usr/bin/cuneiform
## siehe .profile ... :
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH### test:
cuneiformsudo zypper addrepo http://download.opensuse.org/pub/opensuse/repositories/X11:/Enlightenment/openSUSE_11.2/X11:Enlightenment.reposudo zypper in agg agg-devel DirectFB-devel fribidi fribidi-devel giflib-devel libeet1 libeina-ver-pre-svn-05-0
libevas-ver-pre-svn-05-0 libevas-ver-pre-svn-05-0-devel libjpeg-devel liblo7 python-liblo python-devel
cd ~
mkdir ~/devel/hocr2pdf
cd ~/devel/hocr2pdf
svn co http://svn.exactcode.de/exact-image/trunk
cd trunk
./configure
make
sudo make install
sudo ln -s /usr/local/bin/hocr2pdf /usr/bin/hocr2pdf
sudo zypper in imagemagick## wenn alles fertig ist, kannst du die devel-pakete löschen:
sudo zypper remove -t pattern devel_C_C++Wenn jemand weiß wie man eingrenzen kann, welche devels man statt pattern devel_C_C++ braucht, bitte hier eintragen. Das entspricht aber ca. essentials... (hab grad kein bock das jetzt auch noch zu recherchieren..)
Danke für die Anleitung
Hallo Daniel!
Danke für die Infos zu SuSE!
Max.
Marc
Hallo,
unter Ubuntu 9.10 scheint es ein Problem mit libagg-dev zu geben:
marc@Ubuntu:~/src/hocr2pdf/trunk$ make
C++ objdir/lib/agg.o
In file included from /usr/include/agg2/agg_rasterizer_scanline_aa.h:42,
from lib/agg.hh:26,
from lib/agg.cc:16:
/usr/include/agg2/agg_rasterizer_cells_aa.h: In member function ‘void agg::rasterizer_cells_aa::line(int, int, int, int)’:
/usr/include/agg2/agg_rasterizer_cells_aa.h:338: error: ‘INT_MAX’ was not declared in this scope
make: *** [objdir/lib/agg.o] Fehler 1
Hat es jemand bereits lösen können? Vielleicht libagg von Hand übersetzen?
Vielen Dank für die super Anleitung!
Marc
hocr2pdf unter Ubuntu Karmic (9.10)
Hallo Marc,
es gibt unter Karmic inzwischen ein Binärpaket für hocr2pdf:
sudo apt-get install exactimage
(Werde das oben noch angeben - danke für diesen indirekten Hinweis!)
Max.
Marc
Hallo Max,
vielen Dank für den Hinweis :-)
Marc
riesige Buchstaben
Erstmal danke für das Tutorial.
Ich war ewig auf der Suche nach einer entsprechenden Lösung und diese ist schick.
Also danke für das Tutorial und vielen Dank an die Programmierer.
Leider habe ich noch ein kleines Problem.
Nutze cuneiform 0.9und hocr2pdf 0.7.4 aus den ubuntu quellen.
hocr-HTML zu erstellen klappt alles und auch das Zusammenfügen mit hocr2pdf. Leider kriege ich dann riesige Buchstaben im Dokument, so dass Suchen und Kopieren gar nicht hinhaut, da die Seitenmaßen nicht mit dem Textplatz korrespondiert. Interessanterweise ist das meist erst ab Zeile 3-4 der Fall. Zeile 1 und 2 sind immer ok.
Wollte es auch kompilieren, aber bin auch in das agg.h-Problem gelaufen.
Grüße
cat
auch mit neuerer hocr2pdf-version
Das selbe Phänomen habe ich auch. Das sonst so gesprächige Google schweigt sich dazu aus. Hat jemand mittlerweile eine Lösung?
hocr2pdf 0.8.0
Cuneiform 0.9.0
Re: auch mit neuerer hocr2pdf-version
Ja, beide Probleme kann ich bestätigen. Habe den Artikel angepasst - vielleicht hat ja jemand eine Lösung und teilt sie mit.
Sandwich-Dateien
Hallo,
ich hab ein Skript gebastelt, welches mit Hilfe von cuneiform und exactimage aus gescannten pdf-Dateien Sandwich-Dateien erstellt. Ich hab auch gleich deb-Pakete fuer Ubuntu dazugebastelt, kann diese allerdings nicht ausprobieren, da ich kein Ubuntu habe.
Wenn es jemand ausprobieren moechte - es sollte ab dem neuesten Ubuntu (10.4) laufen. Quelltexte und deb-Pakete findet man auf der Projektseite:
http://pdfsandwich.origo.ethz.ch/
Manual liegt hier:
http://www.tobias-elze.de/pdfsandwich/index.html
Achtung: Die deb-Pakete erzwingen bewusst cuneiform
Sandwich-Dateien, Teil 2
Sorry, im obigen Post ist was verlorengegangen:
Achtung: Die deb-Pakete erzwingen bewusst cuneiform KLEINER 0.9.0. Version 0.9.0 hat einen Bug, der zusammen mit hocr2pdf zu den oben im Thread beschriebenen riesigen Buchstaben fuehrt.
Tobias.
P.S.: Falls jemand Fehler in den deb-Paketen findet, bitte mich informieren - ich bemuehe mich dann um Bug-fixes.
Re: Sandwich-Dateien
Danke für die Hinweise und Links. Installation unter Ubuntu 10.04 funktioniert problemlos! Da cuneiform in Version 0.7 in der Distribution vorliegt, sollte das Problem mit den riesigen Buchstaben nicht mehr auftreten. Habe ich allerdings noch nicht probiert :-)
Max.
pdfsandwich
Hi!
Mit der Verwendung von cuneiform-linux in Version 1.0.0 scheint der Fehler mit den riesigen Buchstaben gelöst zu sein.
Zu dem pdfsandwich-Programm von Tobias hab' ich einen Artikel im Ubuntuuser-Wiki verfasst, noch in der Baustelle, aber demnächst wohl auch ganz offiziell:
http://wiki.ubuntuusers.de/Baustelle/pdfsandwich
Sehr schönes Tool, besten Dank!
so long
hank aka Heinrich Schwietering
Re: pdfsandwich
Danke für den Hinweis!
pdfsandwich
Hi!
Muss leider zurück rudern: Weitere Tests mit Cuneiform 1.0.0 zeigen, dass der Fehler trotz allem weiter auftritt, wenn auch die erstellten .hocr-Dateien recht gute Qualität aufweisen. Die Ergebnisse der Konvertierung in ein sandwich-pdf sind nur dann relativ gut, wenn ein einheitliches Layout ohne viel Schickschnack und verschiedenen Schriftarten/Größen vorliegt.
Vielversprechend, wenn auch noch nicht ganz ausgereift, ist die neuste Version von gscan2pdf (0.9.32), die jetzt auch mit Cuneiform arbeiten kann; allerdings wohl eine Version benötigt, die mit dem Paket libmagick++-dev (in Ubuntu) kompiliert ist, da funktioniert 1.0.0, wieder unter der Voraussetzung eines einigermaßen einheilichen Layout, schon ganz gut. Es kommt zumindest nicht zu den überdimensionierten Buchstaben - dafür werden dann mal ganze Zeilen ausgelassen, obwohl Cuneiform sie eigentlich (in "externem Test" jedenfalls) erkennt...
Interessant ist da ggf. auch das Tool pdfocr (siehe auch http://wiki.ubuntuusers.de/pdfocr )
Mal sehen, was die Zeit so bringt...
so long
hank aka Heinrich Schwietering
Re: pdfsandwich
Schade! Ich vermute eigentlich auch eher, dass hocr2pdf die Schriften falsch dimensioniert. Die hocr-Dateien schauen für mich ganz gut aus - aber ich kann auch falsch liegen.
Max.
pdfsandwich
Hi!
Das Problem scheint in unterschiedlichen hOCR-Versionen zu liegen: von cuneiform 0.9.0 und größer werden andere hOCR-Dateien erstellt als von den älteren Versionen; hocr2pdf hat wohl wirklich mit den neuen Probleme.
Werde mal sehen, ob die ExactImage-Leute dazu Näheres wissen; sie hatten sich allerdings , nachdem ich sie wg. des agg-bugs angeschrieben hatte, nicht gemeldet...
so long
hank aka Heinrich Schwietering
pdfsandwich
Hi!
Das Update von weiter oben:
"Update: Eine Anleitung zur Installation der Version 1.0 von cuneiform-linux in Ubuntu befindet sich unter: http://wiki.ubuntuusers.de/Baustelle/pdfsandwich. Leider scheint auch diese Version das Problem der großen Schriften nicht zu beheben."
ist etwas missverständlich. In dem Artikel habe ich zudem den Bezug zu Cuneiform 1.0.0 aufgrund der Fehler korrigiert, und explizit auf kleinere Versionen als 0.9.0 hingewiesen.
Sorry, aber ich hoffe, es ergibt sich noch was anderes dazu. Habe jetzt auch nochmal den gscan2pdf-Entwickler angeschrieben. Vielleicht gibt es noch eine andere Möglichkeit als hocr2pdf. um die Lagen zusamenzubekommen?
so long
hank
so long
hank aka Heinrich Schwietering
Alternative gsan2pdf
Hallo!
Als derzeit imho beste Alternative, die mit etwas bug-fixing sehr gute Ergebnisse für "Sandwich-PDFs" bietet, würde ich gscan2pdf empfehlen; mit dem OCR-Engine OCRopus sind auch bei vielen Bildern recht gute Ergebnisse erzielbar. Allerdings muss dazu Version 0.9.31 verwendet, und die tesslanguage-Variable exportiert werden, um nicht-englische Texte vernünftig erkennen zu können. Cuneiform funktioniert leider momentan noch nicht richtig, das soll aber auch noch gefixt werden.
Habe das in http://wiki.ubuntuusers.de/gscan2pdf auf den aktuellen Stand gebracht.
Ansonsten ist DjVu eine echte Alternative, kleine Dateien, gute OCR-Ergebnisse, und mit xsane2pdf http://wiki.ubuntuusers.de/xsane2djvu
auch relativ einfach, und gut zu bedienen über XSane machbar.
so long
Heinrich aka hank (vom ubuntuusers-wikiteam)
Re: Alternative gsan2pdf
Danke für die Hinweise! Ich bin gespannt auf die zukünftigen Entwicklungen.