diff options
Diffstat (limited to 'nixos/lib/test-driver')
-rw-r--r-- | nixos/lib/test-driver/Machine.pm | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/nixos/lib/test-driver/Machine.pm b/nixos/lib/test-driver/Machine.pm index 30664406b26d..c619264eb949 100644 --- a/nixos/lib/test-driver/Machine.pm +++ b/nixos/lib/test-driver/Machine.pm @@ -542,16 +542,20 @@ sub getScreenText { $self->nest("performing optical character recognition", sub { my $tmpbase = Cwd::abs_path(".")."/ocr"; my $tmpin = $tmpbase."in.ppm"; - my $tmpout = "$tmpbase.ppm"; $self->sendMonitorCommand("screendump $tmpin"); - system("ppmtopgm $tmpin | pamscale 4 -filter=lanczos > $tmpout") == 0 - or die "cannot scale screenshot"; + + my $magickArgs = "-filter Catrom -density 72 -resample 300 " + . "-contrast -normalize -despeckle -type grayscale " + . "-sharpen 1 -posterize 3 -negate -gamma 100 " + . "-blur 1x65535"; + my $tessArgs = "-c debug_file=/dev/null --psm 11 --oem 2"; + + $text = `convert $magickArgs $tmpin tiff:- | tesseract - - $tessArgs`; + my $status = $? >> 8; unlink $tmpin; - system("tesseract $tmpout $tmpbase") == 0 or die "OCR failed"; - unlink $tmpout; - $text = read_file("$tmpbase.txt"); - unlink "$tmpbase.txt"; + + die "OCR failed with exit code $status" if $status != 0; }); return $text; } |