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@sbb.spk-berlin.de

 

Von: kitodo-community-bounces@kitodo.org <kitodo-community-bounces@kitodo.org> Im Auftrag von Weber, Frank-Ulrich
Gesendet: Mittwoch, 30. Oktober 2019 14:13
An: kitodo-community@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

Zeutschel GmbH | Heerweg 2 | 72070 Tübingen | Deutschland
p: +49 (7071) 9706-56 | m: | f: +49 (7071) 9706-44
e: Frank-Ulrich.Weber@zeutschel.de | w: http://www.zeutschel.de

Geschäftsführer/President: Joerg Vogler | Registergericht Stuttgart: HRB 380917

Von: kitodo-community-bounces@kitodo.org <kitodo-community-bounces@kitodo.org> Im Auftrag von Wendt, Kerstin
Gesendet: Mittwoch, 30. Oktober 2019 13:49
An: 'kitodo-community@kitodo.org' <kitodo-community@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@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@sub.uni-hamburg.de

www.sub.uni-hamburg.de  

 

Von: kitodo-community-bounces@kitodo.org <kitodo-community-bounces@kitodo.org> Im Auftrag von Uwe Hartwig
Gesendet: Mittwoch, 30. Oktober 2019 13:16
An: kitodo-community@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@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@bibliothek.uni-halle.de