skyim · 15 小时 5 分钟前 · 605 次点击
我想抓取一个网址的内容,发现是图片,不知道有啥解决方案不 http://27.17.15.195:803/show/YPBJ.aspx
使用getimgs.py 下载图片到imgs目录,这里使用的是单线程遍历所有页面,够用.
- process_imgs.py 先将imgs中的图片转换到process_imgs,然后切割图片保存到crops目录
- 用到的库有:PIL
- 一张图片有10行数据,1行标题,行高都是26
- 标题行图片:左侧2列,右侧2列,上侧2行无效,去除
- 数据行图片:左侧2列,右侧2列,上侧1行无效,去除
- 1:用PIL加载图片
- 2:提取图片的2值化数据,将背景变为255白色,将文字变为0黑色
- 在处理过程中有个麻烦,速度太慢,可能我对pil的用法不太正确,有更好方法的请告诉我.
-
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 是使用哪种语言包
-
可以用tesseract训练,做一个自己的识别库,这就需要费很大精力去做这个库了.
我自己设想的识别方式,用人工提取模版:
- 1:标题是固定的几个,将这每个标题图片作为模版存放到数据库,然后从左往右与模版比较,识别出所有标题内容和位置.
- 2:根据标题位置对数据行的图片再进行列切割,得到整个二维表格的图片
- 3:用这些图片,手工选取图片某个文字范围,作为一个文字的模版数据,存储起来.
- 4:用已有的模版数据对图片进行扫描,凡是遇到图片有黑色的地方,但是无法与任何模版匹配,则提示这个范围需要手工添加模版.
- 5:重复3-4步骤,直到所有图片文字的模版被你手工制作出来. 这种笨方法在这个项目中是有可行性的:文字很规矩,可以做模版. 里面有剂量之类的重要数据,用模版依次比较的方式不会有识别错误的情况.只不过人工做模版需要时间,有兴趣的人可以去尝试.