【实战】用易语言 + OCR API 打造自动文字识别工具(通用文字识别/截图识别,附完整源码)

复制代码
#易语言,#OCR,#文字识别,#API调用,#桌面软件开发,#通用文字识别,#截图识别,#编程实战,#易语言源码,#图像识别

【实战】用易语言 + OCR API 打造自动文字识别工具(通用文字识别/截图识别,附完整源码)

导语 :易语言作为中文编程的经典利器,非常适合快速开发Windows桌面小工具。本文带你从零实现一个截图文字识别工具:按下快捷键框选区域,自动识别图中文字并保存到剪辑板。全程调用通用文字识别API,无需自研OCR模型,10分钟完成开发。


一、本文最终效果

运行程序后:

  1. F2 键,鼠标拖拽框选屏幕任意区域

  2. 程序自动截图并调用OCR API识别文字

  3. 识别结果自动复制到系统剪辑板,并弹出提示

适用场景

  • 无法复制文字的网页、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 测试步骤

  1. 打开任意包含文字的网页或图片(如新闻网站)

  2. 按下 F2,用鼠标拖拽框选文字区域

  3. 程序自动弹出识别结果

5.2 常见问题排查

问题 可能原因 解决方法
按下F2无反应 热键被其他软件占用 修改热键为 F3 或其他
识别结果为空 API AppCode错误或未充值 登录控制台检查余额
截图全黑 快照命令在Win10/11下需管理员权限 以管理员身份运行易语言或编译后的exe
提示"未找到WinHttp对象" 系统未安装WinHTTP 改用 彗星HTTP 或 精易模块的网页访问

六、扩展功能建议

你可以基于本文代码轻松扩展以下功能:

  1. 批量识别文件夹内的图片:遍历目录,循环调用API

  2. 识别后自动翻译:对接翻译API,一键翻译识别结果

  3. 截图识别 + 朗读:调用系统TTS朗读识别出的文字

  4. 定时轮播截图:监控屏幕变化,自动识别特定区域(如股票K线数据)

📖 扩展阅读:如果你想进一步了解OCR在不同场景下的应用,推荐阅读系列文章:


七、写在最后

本文带你用易语言 + 成熟OCR API,不到100行代码实现了一个实用的桌面截图识别工具。这种"轻客户端 + 云端AI能力"的开发模式,特别适合个人开发者或中小企业快速落地AI功能。

相关推荐
weixin_307779131 天前
OCR图片文本提取代码
图像处理·python·opencv·自动化·ocr
AI人工智能+1 天前
基于OCR与深度学习的发票识别技术,重构报销系统效率
计算机视觉·自然语言处理·ocr·发票识别
小成Coder2 天前
【Jack实战】如何用 Core Vision Kit 给旅行票据做端侧 OCR 识别
华为·ocr·harmonyos·鸿蒙
石榴树下的七彩鱼2 天前
图片去水印 API 详解:从单图到批量自动化去水印(附 Python/JS/PHP 完整教程)
python·自动化·图片处理·图片去水印·石榴智能·api教程
AI玫瑰助手2 天前
PDF 转 Markdown 主力方案怎么选:PaddleOCR-VL-1.5、MinerU、HunyuanOCR 与 MonkeyOCR 实测对比
pdf·大模型·知识库·表格·md·文字识别·paddleocr
weixin_408099672 天前
模糊图片怎么变清晰?3种AI方案实测对比(附效果图)
人工智能·图片处理·图像增强·api开发·石榴智能·图片变清晰
AI人工智能+3 天前
机动车登记证识别技术通过计算机视觉与深度学习实现证件信息自动化提取,显著提升车辆管理效率
深度学习·计算机视觉·自然语言处理·ocr·机动车登记证识别
AI人工智能+4 天前
银行回单识别系统通过融合计算机视觉、深度学习和自然语言处理技术,实现了财务凭证的智能化处理
人工智能·深度学习·ocr·银行回单识别
我不介意孤独5 天前
面向华为昇腾 NPU 的企业级 PaddleOCR 推理服务,支持多卡多实例动态扩缩容、高召回 OCR 与生产级部署。
服务器·华为·ocr