请群里的帮推荐一款中文识别好的 ocr 软件,运行系统 opensuse

我的电脑使用的是 opensuse13.1, 安装后经群里高手指点,现在可以使用 epson v350 扫描仪了,我的工作情况是还需要将扫描仪得到的图片中的文字通过 ocr 软件识别成电子文档,网下下了 gscan2pdf 用不成,其它一些是不怎么支持中文,现在希望群里的高手帮助推荐一款能识别中文的 ocr 软件,谢谢。

tesseract-ocr
这里有个教程:
lxy.me/tesseract-ocr-introduction-and-tutorial.html

tesseract 软件安装成功,后又在 yast 中安装了中文简体的包,在终端中打开几个文件进行文字识别,英文的还可以识别,中文的总是显示乱码,请帮着解决一下。

您得给文件啊。

1赞



我是说,你用来进行 ocr 的材料你得给出来供别人测试。

测试文件已上传,请大家用 tesseract 识别一下,看是否可以得到正确的中文文本


  1. 你想让大家使用没训练过的 tesseract 在 670x520 的像素范围内识别接近 500 个字?这些字所用的字体还是 Linux 上完全就没有的闭源字体?这是天方夜谭。

这是我使用的 ocr 图片,GIMP 制作,字体是文泉驿微米黑:


命令:

tesseract ./test.png result -l chi_sim

结果:

我觉得这一定不是你的 Boss 交给你的工作任务,因为你对这份工作描述中的最关键的点:OCR,完全一无所知。你的 Boss 很可能说的是:「salttime,我要把这个扫描成电脑上看的文档」(看你之前找 gscan2pdf 就猜到了)。那很简单啊,把它们都扫描成图片,然后再把图片集转成 pdf 就可以了。这里任何人都可以给你个命令行脚本。

但是你可能理解复杂了,非要把图片变成 word 文档,于是就涉及到了你完全不懂的 OCR。

我来告诉你什么是 OCR:

OCR 说白了就是,把一个特定字体的某个字变成计算机可匹配的位置数据,比如在 50x50 像素的格子里,「儿」这个字的撇的黑色像素点落在大概 (30~45, 0~100) 这个范围内,然后把图片进行切割细分,得到许多个 50x50 的格子,在这个格子里 (30~45, 0~100) 它有黑色像素点,那么就非常可能是「儿」字。当然也可能是别的字,究竟是什么字,常用汉字就那么多个,这是概率问题。

而 OCR 的重点是:

  1. 字体。你针对宋体的 OCR 训练数据拿到黑体上识别率不见得高。
  2. 训练。所谓的训练就是让计算机匹配时所遵守的概率无限趋近于现实。你可能需要拿出比如 3 万个字(一篇文章),先用默认的识别一遍(这涉及到了「如何根据某个特定字体制作出默认的数据」),然后逐字逐句去挑错,再改进默认数据(这涉及到了「你需要会编程,能够写出一个根据 tesseract 库改数据的软件」),最后越改这个数据越接近现实。

最后才是拿你训练过的数据去进行我上面做过的:

tesseract ./test.png result -l chi_sim

参考、归纳、脑补自:http://miphol.com/muse/2013/05/tesseract-ocr.html

这是 OCR 工作的基本原理和流程,这完全不可能是一个非程序员做的事情,程序员也懒得做这种事情,这是一种苦逼的体力劳动。

Windows 下的 OCR 软件比如微软 word 自带的那个,ABBYY FineReader(这个最好,而且可以 wine)、以及汉王的软件,都是多少苦逼程序员一起,经历了这种枯燥乏味的流程后的结果。

Linux 下的 OCR 软件都是开源的「框架」,比如 tesseract 和你之前问过的 ocropus,它们只是为在 Linux 下进行这种苦逼工作提供了一个基础,提供了可能性,并不是像你要求的那样拿来就能用的东西。因为没有训练过的数据,你安装的中文数据包只是可供你拿来训练的数据。

何况在 Linux 下训练了也没用,OCR 最大的需求是 word 文档转出来的 PDF 和起点网站吧,那些用的字体可不是文泉驿。你现在能够得到的可供训练的数据估计就是 Google 根据 Droid Sans 弄出来的,训练 1 万年也只能识别 Droid Sans,问题是你能把纸面上的字体改了么。想要微软字体的数据?抱歉,微软是商业字体啊。

所以我觉得现在是你对你需求的描述和理解就不对。钻进死胡同了。

1赞

谢谢,我绝定避开这个死胡同