X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FMisc.pm;h=6108f778abaeb5c8c0a96f11788fbcd5cb9001ef;hb=0fb307c305e4bc2c9c27dc25a3308beae3a4d33c;hp=0e8d92bb31dc1c0098ac266f9554bce8ad2acfe5;hpb=4774ede40353662ddcb4181d824ab2167c68ff8c;p=freeside.git diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm index 0e8d92bb3..6108f778a 100644 --- a/FS/FS/Misc.pm +++ b/FS/FS/Misc.pm @@ -20,6 +20,7 @@ use Tie::IxHash; pkg_freqs generate_ps generate_pdf do_print csv_from_fixed + ocr_image ); $DEBUG = 0; @@ -322,9 +323,9 @@ sub generate_email { my $data; if ( ref($args{'text_body'}) eq 'ARRAY' ) { - $data = $args{'text_body'}; + $data = join("\n", @{ $args{'text_body'} }); } else { - $data = [ split(/\n/, $args{'text_body'}) ]; + $data = $args{'text_body'}; } $alternative->attach( @@ -850,6 +851,41 @@ sub csv_from_fixed { ''; } +=item ocr_image IMAGE_SCALAR + +Runs OCR on the provided image data and returns a list of text lines. + +=cut + +sub ocr_image { + my $logo_data = shift; + + #XXX use conf dir location from Makefile + my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc; + my $fh = new File::Temp( + TEMPLATE => 'bizcard.XXXXXXXX', + SUFFIX => '.png', #XXX assuming, but should handle jpg, gif, etc. too + DIR => $dir, + UNLINK => 0, + ) or die "can't open temp file: $!\n"; + + my $filename = $fh->filename; + + print $fh $logo_data; + close $fh; + + run( [qw(ocroscript recognize), $filename], '>'=>"$filename.hocr" ) + or die "ocroscript recognize failed\n"; + + run( [qw(ocroscript hocr-to-text), "$filename.hocr"], '>pipe'=>\*OUT ) + or die "ocroscript hocr-to-text failed\n"; + + my @lines = split(/\n/, ); + + foreach (@lines) { s/\.c0m\s*$/.com/; } + + @lines; +} =back