继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python3+tesseract获取美股PEG图像上的数据

千万里不及你
关注TA
已关注
手记 310
粉丝 51
获赞 237

1. 缘起

投资了一点美股,总要参考个股资料的(虽然巴菲特老人家觉得分析技术资料没有用),发现一个一个查找,效率太低了。于是想起来用Python写个爬虫程序。话说,不偷懒的码农不是好的码农。发些一般股票app上没有PEG指标(参考股神彼得林奇相关资料)!但是Nasdaq官网上有。

举个栗子:阿里巴巴PEG如下


阿里巴巴PEG


https://img.mukewang.com/5d57ef4c000172eb06730375.png

PEG的值竟然是图片形式的!所以任务就是下载一堆图片,然后识别图片上文字(OCR),马上着手行动。

2. 读取文本

自选股列表:


https://img4.mukewang.com/5d57ef5100018d5302630550.png


读取文本代码:

https://img1.mukewang.com/5d57ef540001c9dc09020648.png


3. 下载PEG图片


https://img.mukewang.com/5d57ef5a00015a1b09080230.png


4. 裁剪图像,获取ROI区域

用到OpenCV  Python版本


https://img3.mukewang.com/5d57ef6000011deb08910360.png


效果如下:


https://img2.mukewang.com/5d57ef630001c4aa02130154.png

5. 分割数字

直接用tesseract识别,出现 Empty page的错误,猜想tesseract不能处理噪声或者干扰图像,

所以需要对图像进行预处理,而且要把数字图像分割出来。

用到cv2.SimpleBlobDetector_create()


https://img2.mukewang.com/5d57ef670001ad1d08910866.png


https://img1.mukewang.com/5d57ef6b0001bbd508960600.png


效果如下:


https://img3.mukewang.com/5d57ef8a0001a34000560044.png

6. 用tesseract OCR识别数字

用到下列命令

tesseract filename -psm 7 stdout digits

digits表示只识别数字

https://img.mukewang.com/5d57ef8d0001b7bc09000245.png

7. 最终结果如下:

启动代码

python3 mystock.py 

https://img4.mukewang.com/5d57ef920001bd2704270580.png

基本上满足需求,不算完美,0.99 识别为0.55,识别率不算太高,后续加入训练数据,应该可以提升识别率。一件看似简单的事情,做到极致还是不容易的。

8. 完整代码见GitHub

https://github.com/ErikZhou/python-ocr



作者:干土
链接:https://www.jianshu.com/p/190968101619

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP