吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17304|回复: 27
上一主题 下一主题
收起左侧

[Python 原创] 【Python 教程】使用 Python 和大漠插件进行文字识别

  [复制链接]
跳转到指定楼层
楼主
简讯 发表于 2020-2-17 11:34 回帖奖励
本帖最后由 简讯 于 2020-2-17 12:06 编辑

家里有一台win7系统的电脑,平时可以用来玩玩游戏消磨时间。但是有时候有一些重复的操作实在是无趣,所以打算写个脚本,让其自动化执行。

最终的目标就是把游戏里一些常用的操作都集合到脚本中去,且无序随机执行,模拟真人操作。点击此处查看原文。

大漠插件介绍

因为使用的是Windows系统,所以好多工作之前已经有大佬完成了。几年前使用过按键精灵的同学一定对大漠插件不陌生,其功能之强大,可以用来完成很多操作。

大漠插件文档

从文档可以看出,功能实在太多了,覆盖了方方面面。我基本使用到的就是图片识别,文字识别,键鼠操作等,最强大的功能莫过于后台操作,也就是窗口最小化时不影响鼠标键盘的操作。想象一下,游戏在后台自动执行,前台继续做工作,互不干扰。

我现在需要做的就是将大漠插件使用python而不是按键精灵让其工作,因为按键精灵这类软件很容易被查出来。

文字识别

图像转文字需要三个步骤。

  1. 拿到图片
  2. 二值化
  3. 使用字库进行识别

当这三步完成的时候,文字顺理成章就被识别出来了。

使用大漠插件的好处是每次识别不需要将识别的图片保存到本地,而是给定屏幕上的范围就可以识别了。

现在我们按步骤操作一波。

拿到图片,获取偏色列表

2113

我们需要识别这张图片中的“3”,“0”,“/”,“2”,“7”。

使用大漠偏色计算器计算偏色。

1231

具体步骤是:

  1. 先抓图,获取图片
  2. 识别数字。将鼠标移到需要识别的数字的颜色部分(例如这个图片背景是棕色,文字是黑色,将鼠标移到黑色部分,稍后的二值化就是将黑色部分突出显示)。
  3. 点击“根据颜色列表的第一个和RGB颜色偏差添加颜色到颜色列表”,会自动生成多个颜色。
  4. 点击计算偏色。

二值化预览区应该可以清晰的看到我们需要识别的数字了。

具体顺序可以配合着这张图:

4311

如果你觉得识别后的文字还不够清晰,可以自己修改颜色列表。

这一步操作我们需要拿到偏色列表:514C45-2B2926。这个偏色列表之后用处非常大。

使用大漠综合工具新建或编辑字库

二值化显示的结果,程序还是不认识“3”或“0”,需要我们告诉程序,“3”这个字符对应的是数字3,这样当我们之后识别字符,程序再遇到“3”样子的字符就会返回3这个数字。

提取点阵并定义文字,将识别后的结果与我们想要的结果做对应,然后添加到字库。

简单描述我们的操作是:

  1. 使用浮动抓图功能,在桌面上找到需要识别的范围
  2. 在第一行RGB,偏色输入刚才的偏色列表
  3. 点击提取点阵(多个)
  4. 打开或新建字库(txt文件)
  5. 定义文字(然后回车)

配合图片解释一波:

31234

需要注意的是在提取点阵的时候弹出一个对话框,直接按确认就可以。

如果遇到一个预览结果显示多个字符,两个字符被认为是一个字符的情况,可能是偏色列表不够严谨,重新在判断偏色吧。

预览结果是“0”,那么就在定义文字一栏输入0,回车,这样就做了对应,并保存到字库中了。

重复以上操作,把需要识别的字符都做对应。当然我介绍的是对于游戏中一些特殊字符,系统无法识别需要自己做对应。大漠插件有提供系统字体的字库,也比较丰富,不一定必须自己造字库。

配合python返回识别结果

前面做了这么多工作,说到底还是为了python做准备。

使用32的python

如果你的电脑里已经有了python,不好意思,可能需要重装。因为调用大漠插件只能使用python 32位的,不限制python2或3。我使用的是python3.7版本的32位。64位会报错。

安装pywin32

安装好32位的python后,安装pywin32库来操作大漠插件。

命令行输入pip install pywin32,等待安装完成。

注册大漠插件

下载好大漠插件压缩包后,需要注册大漠插件。

dm.dll文件的同目录中,使用管理员权限在cmd里执行:

regsvr32 dm.dll

完成注册。

demo

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import win32com.client

class DmBase(object):

    def __init__(self):

        # 调用大漠插件
        self.dm = win32com.client.Dispatch("dm.dmsoft")

        # 设定字库文件,建议在初始化中调用,比较耗时
        self.dm.setDict(0, "C:\\Users\\Li\\Desktop\\help\\data\\num.txt")

        # 使用字库
        self.dm.useDict(0)

    def ocr(self, x1, y1, x2, y2, color_format, sim=0.9):
        """
            文字识别

            - Args:

                x1 (int): 左上x
                y1 (int): 左上y
                x2 (int): 右下x
                y2 (int): 右下y
                color_format (str): 偏色列表
                sim (float): 相似度,范围 0.1-1.0

            - Return:

                识别的字符串
        """
        return self.dm.Ocr(x1, y1, x2, y2, color_format, sim)

这样就完成了python调用大漠插件识别文字的操作。

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
打字的小强 + 1 + 1 我很赞同!
vaysalee + 1 + 1 热心回复!
wangxp + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
lr00007 发表于 2020-8-28 17:59
cai302 发表于 2020-8-9 23:46
楼主你好 我也是用python调用大漠写脚本,其他键鼠、图色操作都能用,就是文字识别一直学不会。按照你的方 ...

我免注册调用大漠老是报错,不知道什么原因
dm = client.Dispatch('dm.dmsoft')    #这句老是出问题
pywintypes.com_error: (-2147024890, '句柄无效。', None, None)
我想请教一下你是怎么调用的
沙发
吾月天 发表于 2020-2-17 11:45
3#
 楼主| 简讯 发表于 2020-2-17 11:50 |楼主

识别文字依托于字库,字库训练的好,识别率就高。
4#
Aiopr 发表于 2020-2-17 11:51
图片好像都挂了
5#
暗夜协奏者 发表于 2020-2-17 11:52
大漠插件我貌似要收费
6#
 楼主| 简讯 发表于 2020-2-17 12:00 |楼主
Aiopr 发表于 2020-2-17 11:51
图片好像都挂了

我这边可以看,可能是网络原因?
7#
 楼主| 简讯 发表于 2020-2-17 12:07 |楼主
Aiopr 发表于 2020-2-17 11:51
图片好像都挂了

换了个图床,现在应该都可以看了。
8#
 楼主| 简讯 发表于 2020-2-17 12:11 |楼主
暗夜协奏者 发表于 2020-2-17 11:52
大漠插件我貌似要收费

好像之前有几个版本是免费的?我是在网上无意间搜到的。
9#
yuan100245775 发表于 2020-2-17 12:32
用是好用哈,只是python 打包成EXE运行特难搞,没办法普及
10#
紫气东来也 发表于 2020-2-17 13:16
专业性强  蒙`````
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表