Skip to content

challengeYY/ocrproj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一个处理图片的项目

skyim · 15 小时 5 分钟前 · 605 次点击
我想抓取一个网址的内容,发现是图片,不知道有啥解决方案不 http://27.17.15.195:803/show/YPBJ.aspx

1:如何获取爬取到所有图片?

使用getimgs.py 下载图片到imgs目录,这里使用的是单线程遍历所有页面,够用.

2:处理图片

  • process_imgs.py 先将imgs中的图片转换到process_imgs,然后切割图片保存到crops目录
  • 用到的库有:PIL
  • 一张图片有10行数据,1行标题,行高都是26
  • 标题行图片:左侧2列,右侧2列,上侧2行无效,去除
  • 数据行图片:左侧2列,右侧2列,上侧1行无效,去除
    • 1:用PIL加载图片
    • 2:提取图片的2值化数据,将背景变为255白色,将文字变为0黑色
  • 在处理过程中有个麻烦,速度太慢,可能我对pil的用法不太正确,有更好方法的请告诉我.

3:使用tesseract做ocr识别

  • 1:下载地址: http://3.onj.me/tesseract/

  • 2:解压之后,设置好path环境变量以便搜索到程序,添加环境变量TESSDATA_PREFIX 用于搜寻语言包

  • 3:tesseract head_1.png stdout -l chi_sim

    • head_1.png是待识别图片
    • stdout 是输出到终端 ,也可以输出到文件
    • -l chi_sim 是使用哪种语言包
  • 识别

    问题来了,这ocr识别结果很多错误怎么办?

    可以用tesseract训练,做一个自己的识别库,这就需要费很大精力去做这个库了.

    不用tesseract做识别,有啥其他方案?

    我自己设想的识别方式,用人工提取模版:

    • 1:标题是固定的几个,将这每个标题图片作为模版存放到数据库,然后从左往右与模版比较,识别出所有标题内容和位置.
    • 2:根据标题位置对数据行的图片再进行列切割,得到整个二维表格的图片
    • 3:用这些图片,手工选取图片某个文字范围,作为一个文字的模版数据,存储起来.
    • 4:用已有的模版数据对图片进行扫描,凡是遇到图片有黑色的地方,但是无法与任何模版匹配,则提示这个范围需要手工添加模版.
    • 5:重复3-4步骤,直到所有图片文字的模版被你手工制作出来. 这种笨方法在这个项目中是有可行性的:文字很规矩,可以做模版. 里面有剂量之类的重要数据,用模版依次比较的方式不会有识别错误的情况.只不过人工做模版需要时间,有兴趣的人可以去尝试.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages