#易语言,#OCR,#文字识别,#API调用,#桌面软件开发,#通用文字识别,#截图识别,#编程实战,#易语言源码,#图像识别
【实战】用易语言 + OCR API 打造自动文字识别工具(通用文字识别/截图识别,附完整源码)
导语 :易语言作为中文编程的经典利器,非常适合快速开发Windows桌面小工具。本文带你从零实现一个截图文字识别工具:按下快捷键框选区域,自动识别图中文字并保存到剪辑板。全程调用通用文字识别API,无需自研OCR模型,10分钟完成开发。
一、本文最终效果
运行程序后:
-
按
F2键,鼠标拖拽框选屏幕任意区域 -
程序自动截图并调用OCR API识别文字
-
识别结果自动复制到系统剪辑板,并弹出提示
适用场景:
-
无法复制文字的网页、PDF、图片
-
游戏窗口内的文字提取
-
软件界面上的报错信息快速抓取
💡 如果你只是偶尔用一下,可以先去 "石榴智能的在线文字识别工具 " 免费体验效果;如果需要集成到自己的软件或系统中,推荐使用 "石榴智能通用文字识别API",本文使用的正是这套API。
二、准备工作
2.1 软件环境
-
易语言 5.9 及以上版本(建议使用静态编译版)
-
支持库:
扩展功能支持库一(内含"快照"命令用于截图)、数据操作支持库一(Base64编码)
2.2 API接口信息
本文使用【石榴智能】通用文字识别API(示例):
| 项目 | 内容 |
|---|---|
| 请求地址 | https://api.shiliuai.com/ocr/general/v1 |
| 请求方式 | POST(JSON格式) |
| 参数 | image_base64:图片Base64字符串 |
| 返回格式 | JSON,data.text 为识别出的文字 |
| 鉴权方式 | Authorization: APPCODE 你的AppCode |
📌 请先前往 石榴智能API市场 注册并获取免费测试AppCode(支持免费在线体验,API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)。
2.3 需要用到的易语言知识点
-
窗口及热键注册(
监视热键) -
鼠标操作(
取鼠标位置、鼠标拖动) -
屏幕截图(
快照) -
Base64编码(
编码_BASE64编码) -
HTTP请求(
HTTP读文件或 使用WinHttp.WinHttpRequest对象) -
JSON解析(
JSON解析或 正则匹配)
三、完整代码实现(逐模块讲解)
3.1 创建程序界面
新建易语言Windows窗口程序,添加以下组件:
| 组件 | 名称 | 说明 |
|---|---|---|
| 标签 | 标签_状态 | 显示"就绪"、"识别中..."等状态 |
| 编辑框 | 编辑框_结果 | 多行显示识别结果,允许手动修改 |
| 按钮 | 按钮_复制 | 一键复制结果到剪辑板 |
| 时钟 | 时钟_截图 | 用于延迟等待用户释放鼠标 |
界面布局参考:
┌─────────────────────────────────┐
│ 自动文字识别工具 v1.0 │
├─────────────────────────────────┤
│ 状态:就绪 │
├─────────────────────────────────┤
│ ┌─────────────────────────────┐│
│ │ ││
│ │ 识别结果将显示在这里 ││
│ │ ││
│ └─────────────────────────────┘│
│ [复制结果] │
└─────────────────────────────────┘
3.2 注册全局热键
在窗口创建完毕事件中注册热键 F2:
.版本 2
.子程序 __启动窗口_创建完毕
监视热键 (&_识别热键, #F2键)
标签_状态.标题 = "就绪,按 F2 开始框选识别"
3.3 热键响应:启动框选截图
.版本 2
.子程序 _识别热键
' 记录起始鼠标位置
API_GetCursorPos (鼠标起始位置)
' 设置一个全屏透明窗口用于显示选框(简化版:直接用十字光标提示)
标签_状态.标题 = "请拖拽鼠标框选识别区域,然后松开"
' 启动鼠标坐标监控(可用时钟)
时钟_截图.时钟周期 = 50
实际开发中,更优雅的做法是创建一个全屏透明窗口并绘制矩形选框。限于篇幅,本文提供一个简化但完全可用 的版本:直接用易语言的 快照 命令截取全屏 ,然后在代码中手动裁剪用户选框区域。最终代码中会给出完整实现。
3.4 获取用户选框范围(核心函数)
.版本 2
.子程序 获取鼠标选框, 矩形
.局部变量 起点X, 整数型
.局部变量 起点Y, 整数型
.局部变量 终点X, 整数型
.局部变量 终点Y, 整数型
API_GetCursorPos (起点X, 起点Y) ' 假设已经定义好API
' 等待用户按住左键拖动并释放
' 实际可用 GetKeyState 循环判断左键状态
为了代码清晰,我们直接提供一个已封装好的模块 :调用 取屏幕区域截图_选框模式 函数。最终完整源码包中会包含该模块。
3.5 截图并转换为Base64
.版本 2
.子程序 截取区域并转为Base64, 文本型
.参数 左侧, 整数型
.参数 顶边, 整数型
.参数 宽度, 整数型
.参数 高度, 整数型
.局部变量 截图数据, 字节集
.局部变量 Base64结果, 文本型
截图数据 = 快照 (, 左侧, 顶边, 宽度, 高度)
Base64结果 = 编码_BASE64编码 (截图数据)
返回 (Base64结果)
3.6 调用OCR API识别
// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/ocr/general-text
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/advanced-general-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
// ==============================================================================
版本 2
.支持库 spec
.支持库 dp1
.子程序 通用OCR_简单认证
.局部变量 局_网址, 文本型
.局部变量 局_提交数据, 文本型
.局部变量 局_提交协议头, 文本型
.局部变量 局_结果, 字节集
.局部变量 局_返回, 文本型
.局部变量 图片数据, 字节集
.局部变量 base64图片, 文本型
图片数据 = 读入文件 ("你的文件路径")
base64图片 = 编码_BASE64编码 (图片数据)
局_提交数据 = "{" + #引号 + "file_base64" + #引号 + ":" + #引号 + base64图片 + #引号 + "}"
局_网址 = "https://ocr-api.shiliuai.com/api/advanced_general_ocr/v1"
局_提交协议头 = "Authorization: APPCODE 你的AppCode" + #换行符 + "Content-Type: application/json"
局_结果 = 网页_访问_对象 (局_网址, 1, 局_提交数据, , , 局_提交协议头, , , , , , , , , , , , , )
局_返回 = 到文本 (编码_编码转换对象 (局_结果, , , ))
返回 (局_返回)
⚠️ 注意:易语言原生不支持JSON解析,上面使用了"文本_取出中间文本"快速提取。生产环境建议使用
JSON或精易模块的JSON类。
3.7 整合流程
.版本 2
.子程序 _识别热键_完整版
.局部变量 选框, 矩形
.局部变量 截图Base64, 文本型
.局部变量 识别文字, 文本型
' 1. 获取用户选框(调用封装好的"取鼠标选框"子程序)
选框 = 取鼠标选框 () ' 返回 {左,顶,右,底}
如果真 (选框.右边 = 0 且 选框.底边 = 0)
标签_状态.标题 = "未选择区域"
返回
结束如果
' 2. 截图并转Base64
截图Base64 = 截取区域并转为Base64 (选框.左边, 选框.顶边, 选框.右边 - 选框.左边, 选框.底边 - 选框.顶边)
标签_状态.标题 = "正在识别中,请稍候..."
' 3. 调用API
识别文字 = 调用OCR识别 (截图Base64)
如果 (识别文字 ≠ "" 且 识别文字 ≠ "识别失败...")
编辑框_结果.内容 = 识别文字
置剪辑板文本 (识别文字)
标签_状态.标题 = "识别完成,结果已复制到剪辑板"
信息框 ("识别成功!结果已复制", 0, )
否则
标签_状态.标题 = "识别失败:" + 识别文字
结束如果
四、完整源码获取
由于篇幅限制,文中只展示了核心代码片段。完整的易语言工程源码(包含鼠标选框模块、JSON解析、错误处理) 已打包,可通过以下方式获取:
🔗 源码下载: 关注公众号【石榴智能】或【变色龙科技】即可获得。
源码包含文件:
-
自动文字识别工具.e-- 主程序源码 -
鼠标选框模块.ec-- 易模块(支持框选全屏区域) -
yyJSON.ec-- JSON解析模块 -
使用说明.txt
五、运行测试与常见问题
5.1 测试步骤
-
打开任意包含文字的网页或图片(如新闻网站)
-
按下
F2,用鼠标拖拽框选文字区域 -
程序自动弹出识别结果
5.2 常见问题排查
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 按下F2无反应 | 热键被其他软件占用 | 修改热键为 F3 或其他 |
| 识别结果为空 | API AppCode错误或未充值 | 登录控制台检查余额 |
| 截图全黑 | 快照命令在Win10/11下需管理员权限 | 以管理员身份运行易语言或编译后的exe |
| 提示"未找到WinHttp对象" | 系统未安装WinHTTP | 改用 彗星HTTP 或 精易模块的网页访问 |
六、扩展功能建议
你可以基于本文代码轻松扩展以下功能:
-
批量识别文件夹内的图片:遍历目录,循环调用API
-
识别后自动翻译:对接翻译API,一键翻译识别结果
-
截图识别 + 朗读:调用系统TTS朗读识别出的文字
-
定时轮播截图:监控屏幕变化,自动识别特定区域(如股票K线数据)
📖 扩展阅读:如果你想进一步了解OCR在不同场景下的应用,推荐阅读系列文章:
七、写在最后
本文带你用易语言 + 成熟OCR API,不到100行代码实现了一个实用的桌面截图识别工具。这种"轻客户端 + 云端AI能力"的开发模式,特别适合个人开发者或中小企业快速落地AI功能。

