Ruby Ruby 图片识别试卷

bighuzi · 2016年12月22日 · 最后由 shiny 回复于 2016年12月30日 · 5947 次阅读

现有一个需求,需要做一个试卷的识别, 学生在涂抹了学生考号之后我需要识别出考生涂抹的是哪几个数字。 试卷如图,不知道如何实现。。有找过几个 gem,但是其中出来的东西跟想象中的还是有很大的差异。 有没有做个类似的。给个思路跟技术点呀。。。。

电子扫描后根据像素点判断

从图片中定位每个答案对应点的位置,可以利用一些图像识别的库去做,然后用一个简单的色差判别库进行结果

#1 楼 @ywjno #2 楼 @jimrokliu 安装 tesseract-ocr,启动的时候遇到这样一个异常现象。有什么解决办法呀。。

/Users/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.14/lib/ffi/library.rb:147:in `block in ffi_lib': Could not open library '/var/folders/bd/lgr6tqfd16b_z7k25c866vnr0000gn/T/.ffi-inline-501/a2a96759ac9899a5d051acec5a8ae12abdd65b02.dylib': dlopen(/var/folders/bd/lgr6tqfd16b_z7k25c866vnr0000gn/T/.ffi-inline-501/a2a96759ac9899a5d051acec5a8ae12abdd65b02.dylib, 5): Library not loaded: /usr/local/opt/tesseract/lib/libtesseract.3.dylib (LoadError)
  Referenced from: /var/folders/bd/lgr6tqfd16b_z7k25c866vnr0000gn/T/.ffi-inline-501/a2a96759ac9899a5d051acec5a8ae12abdd65b02.dylib
  Reason: image not found

#3 楼 @bighuzi 我不是这部分的专家,我只是根据我对图像识别算法的理解给你一些思路,代码上帮不上。

你要做 OCR 啊,你要安装很多图像依赖库,ffi 的这个库还要指定一下 --platform=ruby。最好是在 Linux 上跑,或者 mac 上起一个 docker 来搞。

思路可以参考唐巧的博客,http://blog.devtang.com/2013/10/19/the-tech-detail-of-ape-client-2/,具体库或者代码就只有自己搞了

#5 楼 @hanluner 在 github 上有版本说明是需要装低地的 tesseract, 但是我在安装低版本的时候出现了一个问题,是

Error: Calling Resource#sha1 is disabled!
Use Resource#sha256 instead.
/Users/huzige/Library/Caches/Homebrew/Formula/tesseract.rb:123:in `block (2 levels) in <class:Tesseract>'

这个鬼。。有点不明觉厉的感觉。。第一次搞这图像识别。很受伤。。。

你需要除了不能生孩子外全能的 matlab,当然可用开源版的 octave with cli 即可。

说下我的思路。第一,定位四个角,你看四个角上有定位的黑点。第二,每个槽位的相对位置提前量好。然后根据四个点的位置裁出试卷,根据相对位置计算每一题的位置,计算里面像素点,黑的程度就行了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号