python调用大漠插件,实现毫秒级ocr
前言
遇到一个朋友需求:对股票交易数据进行ocr识别(更好的方法是调用api接口,但是那个数据接口是闭源的,需要逆向),使用Tesseract OCR识别速度在200ms左右,速度不理想。这时候发现了大漠!
大漠介绍
大漠综合插件(dm.dll)采用vc6.0编写,是一款集前后台,文字识别,图色,键鼠,窗口,内存,DX,Call等功能于一身的综合插件。主要用于按键精灵、简单游、易语言等辅助制作工具,具有识别速度超级快的特点! 采用COM接口编写,适用于所有语言调用。为什么它识别快?
- 主要采用模板匹配和字库对比方法
- 预先加载字库到内存,减少识别时的计算量
- 字库针对常见字体和大小进行了优化
所以要用大漠,需要建立字库,字库建立教程:https://www.cnblogs.com/100-rzsyztd/p/13045724.html
免注册调用
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import ctypes
import win32com.client
import configparser
class pydm:
# 免注册调用
def __init__(self):
reg =[注册码]
reg2 = [附加码]#注册码附加码可以去某宝买,5块钱一个月
self.obj = ctypes.windll.LoadLibrary(r".\pydamo\DmReg.dll")
self.obj.SetDllPathW(r".\pydamo\dm.dll"), 0)
# 创建大漠对象
self.dm = win32com.client.DispatchEx("dm.dmsoft")
self.dm.setDict(0, ".\dm_soft.txt")
# 注册大漠
res = self.dm.Reg(reg, reg2)
print("大漠注册返回值: {}".format(res))
self.dm.useDict(0)
# 获取大漠版本号
print(self.dm.ver())
def ocr(self,x1, y1, x2, y2,ysms,mh=0.9):
#x1, y1, x2, y2,屏幕区域坐标
#ysms 颜色范围
#mh 模糊度
s = self.dm.Ocr(x1, y1, x2, y2,ysms,mh)
return s
除此之外,大漠的其他功能都可以使用。具体功能可以阅读大漠使用说明。大漠官方文档:http://www.dmwebsite.net/