[Kitodo] [OCR] Texterkennung mit Kitodo
Uwe Hartwig
uwe.hartwig at bibliothek.uni-halle.de
Fr Nov 1 15:07:29 CET 2019
Liebe Community,
vielen Dank für die konstruktiven Anregungen, mit deren Hilfe ich den
Button zumindest testweise reanimieren konnte, wenn auch leider nicht
auf dem Weg über das ocr.php-Script.
Eventuell fehlt da noch ein VHost in der Apache-Konfiguration ...
Für Kitodo-OCR nutzen wir einen externen Dienstleister, der uns
gleichzeitig HOCR und Textdaten bereitstellt. Für's erste habe ich den
Metadaten-Ordner in den Tomcat gelinkt, die ocrUrl angepasst und so die
plain-Text-OCR-Daten direkt vom Tomcat geladen. Dabei hat sich dann als
Problem gezeigt, dass die Textdaten mal als ASCII und mal UTF-8 erkannt
werden. Damit die Zeichen in der Web-UI zuverlässig lesbar sind, musste
ich zusätzlich einen WebApp-Filter integrieren, der UTF-8 als
Response-Content erzwingt. Das ist mir zwar etwas zu kompliziert, aber
es kamen zumindest Daten in die Ansicht.
Viele Grüße!
On 31.10.19 11:17, Möller, Armin wrote:
>
> Liebe Community,
>
> ich kann die Funktion bestätigen. Ich habe den OCR-Button bei uns auch
> implementiert. Dazu noch ein paar Anmerkungen.
>
> Ich habe ein Script das ALTO in eine TXT-Datei wandelt und ausgibt.
> Dabei ist aufgefallen das allen Zeilenumbrüche in der Anzeige entfernt
> werden.
>
> Also liefere ich HTML aus mit <pre>Datei</pre> das sieht dann deutlich
> besser aus. Da ich das ALTO-Verzeichnis benötige wäre es schön wenn
> der VariableReplacer auch ocraltopath liefern würde. Jetzt ändere ich
> einfach bei ocrplaintextpath „_txt/$“ in „_alto/“ um und fertig.
>
> Damit spare ich noch doppelte Datenhaltung von ALTO- und txt-Dateien.
>
> Eintrag in goobi_config.properties
>
> showOcrButton=true
>
> ocrUrl=http://b-digiwf-1.sbb.spk-berlin.de/cgi-bin/pres/gib_ocr.pl?ocrtxtpath=(ocrplaintextpath)
>
> Anbei noch das Perl-Script
>
> #!/usr/bin/perl
>
> # -*- coding: utf-8 -*-
>
> #Programm einchecken
>
> use feature ":5.10";
>
> use strict;
>
> use CGI qw/ :all -debug /;
>
> use XML::LibXML;
>
> use HTML::Entities;
>
> if( !defined(param("ocrtxtpath")) or !defined(param("imgrange")) ){
>
> fehlerr( "falscher Aufruf " ) ;
>
> }
>
> my $ocrpath = param("ocrtxtpath");
>
> my $bild = param("imgrange");
>
> # Umwandeln von OCR-TXT nach OCR_ALTO
>
> $ocrpath =~ s#_txt/$#_alto/#;
>
> my $file = "$ocrpath".sprintf("%08d",$bild).".xml";
>
> if( ! -f $file ) {
>
> fehlerr( "OCR $file ist nicht in der Präsentation");
>
> }
>
> # Umwaldenl von ALTO in TXT
>
> my $tmp = alto2txt($file);
>
> binmode( STDOUT,':utf8');
>
> # ON the fly TXT to HTML pre-formatet
>
> print STDOUT "Content-Type: text/html;
> charset=UTF-8\n\n<pre>".encode_entities($tmp->{$file})."</pre>";
>
> sub fehlerr {
>
> print STDOUT "Content-Type: text/html; charset=UTF-8\n\n<pre>Keine OCR
> gefunden</pre>";
>
> exit(0);
>
> }
>
> sub alto2txt {
>
> # Umwandeln mit ein bisschen Layout
>
> my ( $file ) = @_;
>
> my $parser = XML::LibXML->new();
>
> my %xmls;
>
> my $ret;
>
> if( ref ( $file ) ) {
>
> $xmls{'unkown'}=$file;
>
> } elsif ( -f $file ) {
>
> $xmls{$file}=$parser->parse_file($file) || die "parse";
>
> } elsif ( -d $file ) {
>
> opendir my $DIR,$file || die "parse";
>
> while ( my $f = readdir($DIR) ) {
>
> next unless $f =~ /xml$/;
>
> #~ say $file;
>
> $xmls{$f}=$parser->parse_file("$file/$f") || die "parse";
>
> }
>
> close $DIR;
>
> }
>
> for my $k ( sort keys %xmls ) {
>
> my $obj = $xmls{$k};
>
> my %text;
>
> for my $line ( $obj->findnodes('//*[name()="TextLine"]')) {
>
> my $vp = $line->getAttribute("VPOS");
>
> ($vp) = grep { abs($_-$vp)<10 } (keys %text,$vp);
>
> $text{$vp} .= ($text{$vp} ? "\t" : "");
>
> for my $string ( $line->findnodes('.//*[name()="String"]')) {
>
> if ( $string->getAttribute("SUBS_TYPE") eq "HypPart1" ) {
>
> $text{$vp} .= ($text{$vp} ? " " :
> "").$string->getAttribute("SUBS_CONTENT");
>
> } else {
>
> $text{$vp} .= ($text{$vp} ? " " : "").$string->getAttribute("CONTENT")
> unless $string->getAttribute("SUBS_TYPE") eq "HypPart2"
>
> }
>
> }
>
> }
>
> for my $key ( sort { $a <=> $b } keys %text ) {
>
> $ret->{$k} .= "$text{$key}\n";
>
> }
>
> }
>
> return $ret;
>
> }
>
> Mfg
>
> Armin Möller
>
> --
> ******************************************************************
> Armin Möller, Administrator
> Abt. IDM Ref. 2 Tel +49 30 266 432231
> Staatsbibliothek zu Berlin PK
> Potsdamer Str. 33
> 10772 Berlin armin.moeller at sbb.spk-berlin.de
> <mailto:armin.moeller at sbb.spk-berlin.de>
>
> *Von:*kitodo-community-bounces at kitodo.org
> <kitodo-community-bounces at kitodo.org> *Im Auftrag von *Weber, Frank-Ulrich
> *Gesendet:* Mittwoch, 30. Oktober 2019 14:13
> *An:* kitodo-community at kitodo.org
> *Betreff:* Re: [Kitodo] [OCR] Texterkennung mit Kitodo
>
> Hallo Herr Hartwig,
>
> der OCR-Button ruft schlicht die unter ocrUrl konfigurierte URL auf
> und füllt das OCR Fenster mit deren Ausgabe.
>
> (tifpath) ist ein Platzhalter und wird zur Laufzeit passen ersetzt
> (siehe VariableReplacer.pdf). Zusätzlich wird die
> Seitennummer(imgrange) angehängt.
>
> An dieser Stelle (ocr.php) könnten natürlich auch andere Formate
> eingelesen und passend ausgegeben werden.
>
> Beste Grüße
>
> Frank Ulrich Weber
>
> ------------------------------------------------------------------------
>
> Frank-Ulrich Weber
> Product Manager Software Solutions
>
> <http://www.zeutschel.de>
>
>
>
> <https://twitter.com/zeutschelgmbh>
>
>
>
> <http://www.youtube.com/user/zeutschelbookscanner>
>
>
>
> <https://www.facebook.com/pages/Zeutschel-GmbH/193873073980288?fref=ts>
>
>
>
> *Zeutschel GmbH*| Heerweg 2 | 72070 Tübingen | Deutschland
> p: +49 (7071) 9706-56 | m: | f: +49 (7071) 9706-44
> e: Frank-Ulrich.Weber at zeutschel.de
> <mailto:Frank-Ulrich.Weber at zeutschel.de> | w: http://www.zeutschel.de
>
>
>
>
>
>
> Geschäftsführer/President: Joerg Vogler | Registergericht Stuttgart:
> HRB 380917
>
>
>
> <https://www.zeutschel.de/>
>
> *Von:* kitodo-community-bounces at kitodo.org
> <mailto:kitodo-community-bounces at kitodo.org>
> <kitodo-community-bounces at kitodo.org
> <mailto:kitodo-community-bounces at kitodo.org>> *Im Auftrag von *Wendt,
> Kerstin
> *Gesendet:* Mittwoch, 30. Oktober 2019 13:49
> *An:* 'kitodo-community at kitodo.org' <kitodo-community at kitodo.org
> <mailto:kitodo-community at kitodo.org>>
> *Betreff:* Re: [Kitodo] [OCR] Texterkennung mit Kitodo
>
> Hallo Herr Hartwig,
>
> auf die Schnelle ein Bild vom „Verschollenen“ aus unserem Kitodo:
>
> cid:image001.png at 01D58F28.9146AE90
>
> Technische Voraussetzung ist, dass im Vorgangsverzeichnis (neben den
> ALTO-Files) ein Verzeichnis mit reinen .txt-Dateien der
> OCR-Ergebnisse existiert. Wir lassen diese Textdatei zusätzlich und
> ohne Mehrkosten vom OCR-Dienstleister erzeugen. Dann kommt noch ein
> kl. Stück Konfiguration in goobi_config.properties dazu:
>
> showOcrButton=true
>
> ocrUrl=https://kitodo.sub.uni-hamburg.de/tools/ocr.php?path=(tifpath)
>
> Ich hoffe, ich habe jetzt keinen Baustein vergessen.
>
> Viele Grüße von Kerstin Wendt
>
> --
>
> Kerstin Wendt
>
> Stabsstelle Digitalisierung
>
> Staats- und Universitaetsbibliothek Hamburg Carl von Ossietzky
>
> Von-Melle-Park 3, 20146 Hamburg
>
> Telefon 040/42838-5817 | Fax : 040/41345070
>
> Mail: kerstin.wendt at sub.uni-hamburg.de
> <mailto:kerstin.wendt at sub.uni-hamburg.de>
>
> www.sub.uni-hamburg.de <http://www.sub.uni-hamburg.de>
>
> *Von:* kitodo-community-bounces at kitodo.org
> <mailto:kitodo-community-bounces at kitodo.org>
> <kitodo-community-bounces at kitodo.org
> <mailto:kitodo-community-bounces at kitodo.org>> *Im Auftrag von *Uwe Hartwig
> *Gesendet:* Mittwoch, 30. Oktober 2019 13:16
> *An:* kitodo-community at kitodo.org <mailto:kitodo-community at kitodo.org>
> *Betreff:* Re: [Kitodo] [OCR] Texterkennung mit Kitodo
>
> Liebe Community, lieber Herr Gerhardt,
>
> ich hatte die Hoffnung, dass die Einbindung der erstellten OCR-Daten
> (im Format HOCR-xhtml) im Prinzip in Kitodo 2.x möglich ist und es
> einen Fehler in unserer Kitodo-Konfiguration gibt, die dazu führt,
> dass keine Daten angezeigt werden. Nun klingt das für mich leider so,
> als sei diese Funktionalität schon länger verschollen.
>
> Bei unserem derzeitigen Workflow haben die Mitarbeiter im VL-Manager
> die Möglichkeit, anhand der OC-Resultate zusätzliche
> Qualitätssicherungsmaßnahme einzuleiten, z.B. einen Nachscan
> anzufordern. Das wäre also in dieser Form nach derzeitigem
> Kenntnisstand mit Kitodo 2.x nicht möglich, weil keine OCR-Daten im
> Metadateneditor angezeigt werden?
>
> Danke und Grüße!
>
> On 30.10.19 13:02, Henning Gerhardt wrote:
>
> Liebe Community, lieber Herr Hartwig,
>
> Kitodo.Production 2.x bringt selbst keine Werkzeuge mit, um eine
>
> Texterkennung direkt durchzuführen und ist auf externe Dienste
>
> angewiesen. Ein solcher Dienst versteckt sich hinter dem "OCR" Button,
>
> der eine nicht näher spezifizierte Schnittstelle anspricht und von
>
> dieser nicht näher spezifizierte Daten zurück bekommt. Damit soll man
>
> dann wohl die Ergebnisse im Metadateneditor von Kitodo.Production sehen
>
> können. Ich selbst habe in den vielen Jahren der Nutzung von
>
> Kitodo.Production 1.x und 2.x niemals eine solche Einbindung gesehen und
>
> / oder erlebt.
>
> An der SLUB wird die OCR selbst als eigenständiger Schritt / Aufgabe
>
> nach der Metadaten-Bearbeitung ausgeführt. Über unseren externen OCR
>
> Dienstleister werden die Ergebnisse als ALTO-XML zurückgeliefert und im
>
> jeweiligen Vorgangsverzeichnis abgelegt. Beim Export werden neben den
>
> Bild- und Metadaten auch die vorhandenen OCR Daten exportiert und an die
>
> Präsentation auf Basis von Kitodo.Presentation übergeben.
>
> Kitodo.Presentation stellt dann die OCR Ergebnisse dar.
>
> Viele Grüße
>
> Henning Gerhardt
>
> On 10/30/19 11:10 AM, Uwe Hartwig wrote:
>
> Liebe Community,
>
> mal allgemein in die Runde gefragt: Wer hat Erfahrungen mit den
>
> Texterkennungsfunktionalitäten mit Kitodo gesammelt?
>
> Und wenn ja, mit welcher Kitodo-Version?
>
> Da wir bei der ULB Sachsen-Anhalt auf ALTO-XML setzen, interessiert uns
>
> natürlich, ob Kitodo mit diesem Format etwas anfangen kann. Dazu zählt,
>
> z.B. ob der "OCR"-Button in der Strukturierungsansicht diese Daten
>
> entsprechend darstellen kann und ob dieses Format auch von
>
> nachgelagerten Prozessen Richtung DMS-Export (zedExporter) verarbeitet
>
> werden kann.
>
> Danke!
>
> _______________________________________________
>
> Kitodo-Community mailing list
>
> Kitodo-Community at kitodo.org <mailto:Kitodo-Community at kitodo.org>
>
> https://maillist.slub-dresden.de/cgi-bin/mailman/listinfo/kitodo-community
>
> --
> Uwe Hartwig
> Anwendungsentwickler IT / Digitale Dienste
> Universitäts- und Landesbibliothek Sachsen-Anhalt
> August-Bebel-Straße 13
> D - 06108 Halle (Saale)
> Fon: + 49 345 55 22 183
> Mail:uwe.hartwig at bibliothek.uni-halle.de <mailto:uwe.hartwig at bibliothek.uni-halle.de>
>
> _______________________________________________
> Kitodo-Community mailing list
> Kitodo-Community at kitodo.org
> https://maillist.slub-dresden.de/cgi-bin/mailman/listinfo/kitodo-community
--
Uwe Hartwig
Anwendungsentwickler IT / Digitale Dienste
Universitäts- und Landesbibliothek Sachsen-Anhalt
August-Bebel-Straße 13
D - 06108 Halle (Saale)
Fon: + 49 345 55 22 183
Mail: uwe.hartwig at bibliothek.uni-halle.de
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://bibservices.biblio.etc.tu-bs.de/pipermail/kitodo/attachments/20191101/6e7463ee/attachment-0001.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : image002.png
Dateityp : image/png
Dateigröße : 4047 bytes
Beschreibung: nicht verfügbar
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/kitodo/attachments/20191101/6e7463ee/attachment-0006.png>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : image003.png
Dateityp : image/png
Dateigröße : 4594 bytes
Beschreibung: nicht verfügbar
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/kitodo/attachments/20191101/6e7463ee/attachment-0007.png>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : image004.png
Dateityp : image/png
Dateigröße : 4355 bytes
Beschreibung: nicht verfügbar
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/kitodo/attachments/20191101/6e7463ee/attachment-0008.png>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : image005.png
Dateityp : image/png
Dateigröße : 4533 bytes
Beschreibung: nicht verfügbar
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/kitodo/attachments/20191101/6e7463ee/attachment-0009.png>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : image006.png
Dateityp : image/png
Dateigröße : 40523 bytes
Beschreibung: nicht verfügbar
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/kitodo/attachments/20191101/6e7463ee/attachment-0010.png>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : image007.png
Dateityp : image/png
Dateigröße : 86012 bytes
Beschreibung: nicht verfügbar
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/kitodo/attachments/20191101/6e7463ee/attachment-0011.png>
-------------- nächster Teil --------------
_______________________________________________
Kitodo-Community mailing list
Kitodo-Community at kitodo.org
https://maillist.slub-dresden.de/cgi-bin/mailman/listinfo/kitodo-community
Mehr Informationen über die Mailingliste Kitodo