2018-05-10 Scanning & OCR

The CanoScan LiDE 25 is still with me! I have a little OCR project and wanted to use it on the Mac, but I think it no longer works. The scanner still works but the OCR tool that came with it is nowhere to be found. Instead of investing time getting it to work on the Mac I decided to try it on the new laptop.

OCR

So, here I have a bit more than 150 pages written using a typewriter, in German, and an old flatbed scanner. I tried two scanning apps on the iPad, but they were no good. On the laptop, I started with `apt install yagf tesseract-ocr-deu`.

“YAGF is a graphical interface for cuneiform and tesseract text recognition tools on the Linux platform. With YAGF you can scan images via XSane, import pages from PDF documents, perform images preprocessing and recognize texts using cuneiform from a single command centre. YAGF also makes it easy to scan and recognize several images sequentially.” Looking forward to cuneiform OCR!

Sadly, it crashed as soon as `xsane` finished scanning an image. So I decided to do the scanning and OCR myself.

First, the scanning: I have a flat bed scanner that takes a few seconds to scan a page. Whenever it is silent, open cover, take out paper, put in next page, close cover, switch to terminal, hit Enter, go back to what I was doing. It’s a workflow that works even if it is distracting.

This is the script I used:

#!/usr/bin/perl
use strict;

print "Finding scanner...\n";
open(F, '-|', 'sane-find-scanner');
my $device;
while(<F>) {
  if (/^found/) {
    my @words = split;
    $device=$words[-1];
    last;
  }
}
if (!$device) {
  die "sane-find-scanner could not determine device\n";
} else {
  print "Found $device...\n";
}

my $base = $ENV{HOME} . "/Desktop/scan";
my $n = $ARGV[0] || 1;
while (1) {
  my $file = sprintf("$base %03d.tiff", $n);
  while (-e $file) {
    $n++;
    $file = sprintf("$base %03d.tiff", $n);
  }

  print "Scanning and saving as $file...\n";
  system("scanimage --device=plustek:$device --format=tiff --mode=lineart --resolution=300 -l 0 -t 0 -x 210 -y 297 > '$file'");
  print "Press Enter for another image.\n";
  my $answer = <STDIN>;
  last if $answer ne "\n";
  $n++;
}

print "Done.\n";

And now for the OCR workflow. Tesseract is a command line tool. It takes an image and generates a text file. Everything else – all the editing! – will happen later, in an editor.

Tesseract

#!/usr/bin/perl
use strict;

print "OCR current directory...\n";

opendir(my $dh, ".") or die "Can't opendir: $!";
my @tiffs = grep { /\.tiff$/ } readdir($dh);
closedir $dh;

for my $tiff (@tiffs) {
  my $base = $tiff;
  $base =~ s/\.tiff$//;
  next if -s "$base.txt";
  print "tesseract $tiff\n";
  system("/usr/bin/tesseract", $tiff, $base, '-l', 'deu');
}
print "Done.\n";

This gets you images like this one:

Example Page

And text like this:

A

fuhr ich mit Gretl 32 einem Wagen, kein Auto,sondern eben einer Kalesse
nach Gaya ‚Veraniaßt dies natürlich Herr Willerth . Bei dieser Gelegen-
leit blieben wir gleich einen Nachmittag bei Elli.ä.h.bei Familie Grunt
und verbrachten wieder nette Stunden „dann gings wieäer nach Keltschan.
Ich glaube, schon erwähnt zu haben, das in keltschan eine Zuckerfabrik
war, deren Direktor Herr Willerth war.Die Zeit wer einfach wunderschön

Yüälyg

“fast möchte ich sagen, in’ Keltschan bei Willerth noch schöner wie bei

Fan. &$runt in Gaya .Ich habe mich mit Gretl wunäierbar verstanden,ich
glaube noch besser wie in der Schulzeit . 3s wurden nicht eine Woche son-
dern sehr wie 2 Wochen und dann gings wieder zu Zlli nach Gaya.Jede woll-
te, ich solle noch bei ihnen bleiben, auch die lütter von ihnen waren
dieser Keinung.Ich war also ein liebgeworäener vast.-

Vielleicht werdet Ihr Euch meine lieben Kindern wundern,wieso ich das
Alles noch weiß.Nun ja, teilweise aus neinem Gedächnis,teilweise aus
Briefen, die mir jetzt in die Hände gekonnen sind,die ich selbst damals
von Keätschan und Gaya an meinem damals herzailerliebsten Schatz, Buren
Fapa geschrieben habe, und die sind nicht wenige. Was bemerkenswert ist,
das Euer Fapa all diese Schreiben von mir sich aufgehoben hat, - aufgeho-
ben bis zu seinen Tode.-

Der August näherte sich langssam seinen Ende und ich war noch imxzer.in
Gaya, dazwischen zwar schon wieder in Keltschan,da kan eine Nachricht von
Wien xx& vonreinem llammerle und zugleich von Eurem Fapa. Noch heute sehe
ich in der Erinnerung voller Schmerz den Briefmeiner !iama lesen,was sie
mitgemacht,was sie gelitten durch eine 3rustoperation chne liarkose ,

ohne Vereisung,dabei roher Behandlung und rohen ilorten.Diese wunderbare
Kutter schrieb nir,sie wollte mir vo:her nichts von einer Üperation schrei
ben,damit ich mich nicht sorge und meine Erholung nicht gef“hrde, Sie ha-
be auch lialter gebeten, mir ja nichts. davon zu schreiben .Sie wollte erst
nachher, wenn alles gut verbei gehi,nir davon scnreiben,erst.dann wenn
ich nir nicht Sorgen über den Aunagang der Operation machen nö. So var
meine. ama, so leiden ‚aber die Kinder sollenes nicht wissen.Imner wie-
der steht das Bild vor nir,den Brief in der Kand zich in mein Ziuxer zu-
rück ziehen und heulen .Zu tief hat mich ergzfiffien, was meine ana lei-
den mußte,was muß sie ertragen haben.Ist das noch menschlich ‚frage ich
mich ? Ich erinnere micn noch gut- zu3erdem lese ich es jetzt aus diesen
alten Briefen-ich wollte das Zimmer nicht. verlassen und vergrub xich in
meinen Schmerz, wollte nichts’ essen,nicht trinken und mit niemand reden .
Frau/rüßrene zu mir ,„ sonst hätte ich mein Zimxer noch lange nicht ver -
lassen „kein Narzerle schrieb mir noch,ws für einen braven,zuten ien -
schen ich einzal zun lüiann bekonme,er kam gleich ins Spital zur liama,vwie
er davon hörte,er war beim lachhausekommen vom Spital zur Tante Eella dabei.
(in Fetzendorf).dJa,Euer Fapsch besuchte täglich nachmittags meine ilama

"in Hetzendorf und las ihr vor,lenkte sie ab von ihren Schmerzen. Ein ein-

maliger Schwiegersohn,sagte auch später noch meine \lama.Ch es heutzutage
auch noch solche Fälle zibt#Ich zweifle sehr daran.Es hat sich doch so
Vieles,wenn nicht alles geändert in den Fauilien.Die Jugend denkt ganz

anders .Nat;rlich kam auch Papa die arme isama besuchen,Goch er kam von

von Neulengbaeliherein und die Fahrt war teuer u.Fapa hatte ja kein Geld.
Es war ein gro3er Janmmer,Papa postenlos, Günther des-gleichen ‚ebenso
Erika und ich und nirgends ein eigenes Platzerl zum Wohnen.So etwas könnt

Ihr Zuch gar nicht vorstellen,denn trotz einer Postenlosigkeit habt Ihr

_ein Platzerl gehabt, wo Ihr den Kopf zum Schlafenf/Ainlezen könrön,einen

‘Sessel zum Ausruhen, ohne das Euch 'jenand gedrängt hat,denselben zu räu-

sie

As you can see, practically every line needs editing.

You can then concatenate all the text files into a big text file and start using a spell checker, of course. But I fear there will be *a lot* of manual editing involved.

Oh, and to get a non-searchable PDF:

sudo apt install libtiff-tools
tiffcp scan*tiff buch.tiff
tiff2pdf -z -o buch.pdf -a "Brunhilde Marzy" -c "Alex Schroeder" -t "Mein Leben" buch.tiff

31M isn’t too bad, is it?

​#Scanner ​#OCR ​#Purism