2

我正在尝试使用 ABBYY.com 的 PHP 中的 OCR SDK 来识别名片。我有以下代码只是为了检查它是如何工作的。当我执行代码时,我得到一个空白输出。我在哪里可能在代码上出错?

$applicationId = "MyBusinessCardReader";
$password = "密码";
$filename = "businesscard.jpg";
$localDir = 目录名(__FILE__);
$url = "http://cloud.ocrsdk.com/processBusinessCard";

$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_USERPWD, "$applicationId:$password");
curl_setopt($c, CURLOPT_POST, 1);

$post_array = 数组(
  "my_file" => "@$localDir$filename"
);

curl_setopt($c, CURLOPT_POSTFIELDS, $post_array);
$response = curl_exec($c);
curl_close($c);

回声“<pre>”;
回声$响应;
回声“</pre>”;

可以在http://test.goje87.com/vangal/businesscard.jpg看到示例名片图像

4

1 回答 1

3

我对 Abbyy SDK 了解不多。但在您尝试对图像使用任何OCR 引擎之前,您应该始终确保...

  • ...用不同的颜色裁剪所有边框,
  • ...缩放图像,使您的文本达到每 300 DPI 至少 10 pt 的(虚拟)大小。

我针对您的原始样本尝试了 Tesseract v3.01,但没有找到任何东西。

然后我应用 ImageMagick 命令来裁剪边框并将图像缩放到 200%,如下所示:

convert                 \
    businesscard.jpg    \
   -crop 440x200+30+120 \
   -scale 180%          \
    cropped+scaled-businesscard.jpg

得到这张照片:

裁剪的名片

这已经让 Tesseract 的命令行能够识别大部分文本(它在@and上失败.):

tesseract b.jpg bcard && cat bcard.txt

  Tesseract Open Source OCR Engine v3.01 with Leptonica

    Fe/<70"
    MIKE FARAG
    PH 913 284 6455
    EM milzeocreatefervoncom
    Tw 0mil<efarag01
    createfervoncom

如果我愿意的话,很可能会让 Tesseract 的识别率接近 100%……

  • ... 为 OCR 目的增强图片质量:增加对比度并转换为纯灰度(“二值化”);
  • ...'train' 对本文档中使用的特定字体的 Tesseract。

我认为你可以通过类似的措施让 Abbyy 的生活更轻松......

于 2012-08-19T17:28:20.097 回答