news 2026/4/17 17:44:33

Notepad++宏脚本:自动化调用OCR镜像处理批量图片

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Notepad++宏脚本:自动化调用OCR镜像处理批量图片

Notepad++宏脚本:自动化调用OCR镜像处理批量图片

📖 项目简介

在日常办公与数据处理中,OCR(光学字符识别)技术已成为从图像中提取文字信息的核心工具。无论是扫描文档、发票识别,还是街景路牌提取,OCR 都能极大提升信息录入效率。然而,面对大量图片时,手动上传、逐张识别的方式不仅耗时,还容易出错。

本文介绍一种高效解决方案:通过 Notepad++ 宏脚本实现对基于 CRNN 模型的 OCR 镜像服务的批量自动化调用。该 OCR 服务基于 ModelScope 的CRNN(卷积循环神经网络)模型构建,专为中文场景优化,支持中英文混合识别,具备高精度、轻量化、无 GPU 依赖等优势。

💡 核心亮点回顾: -模型升级:采用 CRNN 架构,显著优于传统 CNN 模型在复杂背景和手写体上的识别表现。 -智能预处理:集成 OpenCV 图像增强算法,自动完成灰度化、对比度提升、尺寸归一化。 -双模访问:支持 WebUI 可视化操作与 REST API 编程调用,灵活适配不同使用场景。 -CPU 推理优化:平均响应时间 < 1 秒,适合部署于普通服务器或本地 PC。


🎯 应用场景与痛点分析

典型业务需求

  • 批量处理扫描版 PDF 转换后的图像页
  • 发票、收据、合同等凭证类图像的文字提取
  • 教材、讲义、笔记等教育资料数字化
  • 街道标识、广告牌等户外图像内容采集

现有流程瓶颈

尽管该 OCR 服务提供了 WebUI 界面,但其设计初衷是单图交互式识别。当面临上百张图片时,用户需重复执行以下动作: 1. 打开浏览器 → 2. 点击上传按钮 → 3. 选择一张图片 → 4. 等待识别 → 5. 复制结果 → 6. 保存文件
这一过程极易疲劳且效率低下。

目标突破:我们希望通过Notepad++ 的宏录制功能 + HTTP 请求模拟,将整个流程自动化,实现“一键触发,批量处理”。


🛠️ 技术方案设计

整体架构思路

[本地图片列表] ↓ 生成 HTTP POST 请求文本(含 base64 编码图像) ↓ Notepad++ 宏脚本自动播放发送请求 ↓ 捕获返回 JSON 结果并格式化输出 ↓ 导出为结构化文本文件(如 .txt 或 .csv)

关键技术点

| 技术组件 | 作用说明 | |--------|---------| |CRNN OCR API 接口| 提供/ocr端点接收 base64 图像并返回 JSON 识别结果 | |Base64 图像编码| 将本地图片转为字符串,便于嵌入 HTTP 请求体 | |cURL 命令模拟| 使用命令行方式发起 POST 请求(可被 Notepad++ 执行) | |Notepad++ 宏录制| 自动化执行一系列键盘输入,模拟人工粘贴与运行命令 | |正则表达式清洗| 提取 JSON 中的text字段,去除冗余信息 |


🚀 实践步骤详解

第一步:确认 OCR 服务 API 接口规范

启动镜像后,默认开放端口8080,API 文档可通过http://localhost:8080/api/docs查看。

✅ 支持的 API 端点
POST /ocr Content-Type: application/json
请求体示例:
{ "image": "/9j/4AAQSkZJRgABAQEAYABgAAD..." }
返回值示例:
{ "result": [ {"text": "你好,世界!", "confidence": 0.987}, {"text": "Welcome to Beijing", "confidence": 0.965} ], "code": 0, "msg": "Success" }

⚠️ 注意:image字段应为图像的 Base64 编码字符串(不含前缀如data:image/png;base64,


第二步:准备图像 Base64 编码脚本(Python 示例)

创建一个 Python 脚本用于批量生成每张图片对应的 cURL 命令:

import base64 import os # 配置参数 IMAGE_DIR = r"C:\ocr_images" # 替换为你的图片目录 OUTPUT_FILE = "curl_commands.txt" API_URL = "http://localhost:8080/ocr" with open(OUTPUT_FILE, "w", encoding="utf-8") as f: for filename in sorted(os.listdir(IMAGE_DIR)): if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')): filepath = os.path.join(IMAGE_DIR, filename) with open(filepath, "rb") as img_file: encoded_str = base64.b64encode(img_file.read()).decode('utf-8') # 生成 cURL 命令 curl_cmd = f'''curl -X POST "{API_URL}" \\ -H "Content-Type: application/json" \\ -d "{{\\"image\\": \\"{encoded_str}\\"}}" > output_{filename}.json echo. echo --- Processing {filename} completed --- echo. ''' f.write(curl_cmd + "\n") print(f"[✓] 已生成 {len(os.listdir(IMAGE_DIR))} 条 cURL 命令到 {OUTPUT_FILE}")

运行此脚本后,将在当前目录生成curl_commands.txt,内容如下:

curl -X POST "http://localhost:8080/ocr" \ -H "Content-Type: application/json" \ -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAA...\"}" > output_001.jpg.json echo. echo --- Processing 001.jpg completed --- echo. ...

第三步:配置 Notepad++ 宏自动化执行

1. 打开 Notepad++
  • curl_commands.txt用 Notepad++ 打开
  • 确保系统已安装curl(Windows 可通过 Git Bash 或 WSL 获取)
2. 开始录制宏

菜单栏 →宏(M)开始录制

3. 执行一次完整操作

假设你在终端环境下运行命令(如 CMD 或 PowerShell),执行以下动作: - 按Home键跳至行首 - 输入cmd /c(或powershell -c) - 按End键确保光标在末尾 - 按Enter键换行 - 按方向键下移一行

这样就完成了一条命令的“包装 + 执行 + 换行”逻辑

4. 停止录制并保存宏

菜单栏 →停止录制然后点击宏 → 保存当前录制的宏,命名为Run_CURL_Line


第四步:播放宏实现批量执行

回到文档顶部,全选所有 cURL 命令行(Ctrl+A),然后: -宏 → Run a Macro Multiple Times…- 选择Run_CURL_Line- 设置为 “Run until the end of file” - 点击 Run

Notepad++ 将自动为每一行添加执行前缀,并逐行发送给系统 shell 执行!

最终,每个图片的识别结果将以output_xxx.jpg.json形式保存在当前目录。


🧩 后续结果提取与结构化处理

虽然原始输出是 JSON 文件,但我们可以通过另一个宏或脚本来提取纯文本内容。

示例:使用 Notepad++ 正则替换提取文本

假设 JSON 内容如下:

{"result": [{"text": "订单编号:20240405"}, {"text": "金额:¥998.00"}], "code": 0}
目标:提取所有"text": "xxx"中的xxx
  1. 打开替换窗口(Ctrl+H)
  2. 查找模式:"text":\s*"([^"]+)"
  3. 替换为:$1\r\n
  4. 搜索模式选择“正则表达式”
  5. 全部替换

即可得到:

订单编号:20240405 金额:¥998.00

再按文件名整理,即可形成结构化报表。


🔍 性能优化与避坑指南

✅ 成功关键点总结

| 项目 | 建议 | |------|------| |图像大小控制| 单图建议不超过 2MB,避免 Base64 过长导致请求失败 | |分批处理| 若图片过多,建议每 20~30 张拆分为一组,防止内存溢出 | |错误重试机制| 在 cURL 中加入--retry 3 --retry-delay 2提高稳定性 | |日志分离| 每个输出文件命名唯一,避免覆盖 |

❌ 常见问题及解决方法

| 问题现象 | 可能原因 | 解决方案 | |--------|--------|----------| | cURL 执行中断 | 命令中含有换行符\| 改用单行格式或使用 PowerShell 脚本 | | 返回空结果 | Base64 编码包含头部信息 | 确保只编码图像二进制数据 | | JSON 解析失败 | 输出混杂标准错误流 | 使用2>nul屏蔽错误输出 | | Notepad++ 卡顿 | 宏执行过快导致系统阻塞 | 添加延时脚本或改用外部批处理 |


💡 进阶建议:从宏转向批处理脚本

虽然 Notepad++ 宏适合快速原型验证,但在生产环境中更推荐将其升级为完整的自动化脚本。

推荐替代方案:PowerShell 批量 OCR 脚本

$apiUrl = "http://localhost:8080/ocr" $imageDir = "C:\ocr_images" $outputDir = "C:\ocr_results" foreach ($file in Get-ChildItem $imageDir | Where-Object {$_.Extension -in ".jpg",".png"}) { $bytes = [System.IO.File]::ReadAllBytes($file.FullName) $base64 = [System.Convert]::ToBase64String($bytes) $body = @{ image = $base64 } | ConvertTo-Json try { $response = Invoke-RestMethod -Uri $apiUrl -Method Post -Body $body -ContentType "application/json" $texts = $response.result.text -join "`n" Set-Content -Path "$outputDir\$($file.BaseName).txt" -Value $texts Write-Host "✅ Completed: $($file.Name)" } catch { Write-Error "❌ Failed: $($file.Name) - $_" } }

✅ 优势:原生支持 JSON、异常处理、进度反馈,更适合长期维护。


📊 方案对比:三种批量 OCR 实现方式

| 方案 | 易用性 | 灵活性 | 学习成本 | 推荐场景 | |------|-------|--------|----------|-----------| |Notepad++ 宏 + cURL| ⭐⭐⭐⭐☆ | ⭐⭐⭐ | ⭐⭐ | 快速验证、临时任务 | |Python requests 脚本| ⭐⭐⭐☆ | ⭐⭐⭐⭐☆ | ⭐⭐⭐ | 中小型项目、需定制逻辑 | |PowerShell/Bash 批处理| ⭐⭐⭐☆ | ⭐⭐⭐⭐ | ⭐⭐☆ | Windows/Linux 自动化运维 |


🎯 总结:让轻量级 OCR 发挥最大价值

本文围绕一款基于CRNN 模型的轻量级 OCR 镜像服务,提出了一套完整的批量图像自动化识别方案。通过结合 Notepad++ 的宏录制能力与标准 HTTP 接口调用,成功实现了无需编程基础也能上手的“低代码”自动化流程。

📌 核心价值提炼: 1.打破 WebUI 单图限制:利用 API + 脚本实现真正意义上的批量处理。 2.零 GPU 成本运行:CPU 推理 + 轻量模型,适合边缘设备或老旧电脑。 3.中文识别精准度高:CRNN 架构对中文连笔、模糊字体更具鲁棒性。 4.可扩展性强:后续可接入数据库、Excel 导出、邮件通知等模块。


📚 下一步学习建议

如果你希望进一步深化这套系统的应用能力,建议沿着以下路径深入:

  1. 学习 Flask API 开发:了解如何自定义 OCR 接口参数(如语言检测、区域裁剪)
  2. 掌握正则表达式高级用法:提升从非结构化文本中提取关键字段的能力
  3. 探索 AutoHotkey 或 SikuliX:实现 GUI 级别的全自动化操作(适用于无 API 场景)
  4. 集成 into Excel/VBA:打造企业级文档处理流水线

✨ 最终愿景
让每一个普通办公人员都能借助 AI 力量,摆脱重复劳动。
不需要懂深度学习,也能享受 CRNN 带来的高精度 OCR 体验。
技术的意义,正在于此。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:05:09

企业级OCR系统设计:基于CRNN镜像的高可用集群部署方案

企业级OCR系统设计&#xff1a;基于CRNN镜像的高可用集群部署方案 背景与挑战&#xff1a;从轻量识别到工业级OCR服务 随着数字化转型的深入&#xff0c;企业对非结构化文档的自动化处理需求日益增长。发票、合同、证件、路牌等图像中的文字信息提取&#xff0c;已成为RPA、智能…

作者头像 李华
网站建设 2026/4/18 8:37:39

CRNN模型压缩技术:在保持精度下减小50%体积

CRNN模型压缩技术&#xff1a;在保持精度下减小50%体积 &#x1f4d6; 技术背景与挑战 光学字符识别&#xff08;OCR&#xff09;作为计算机视觉中的经典任务&#xff0c;广泛应用于文档数字化、票据识别、车牌读取等场景。随着边缘计算和轻量化部署需求的增长&#xff0c;如何…

作者头像 李华
网站建设 2026/4/18 8:15:03

Obsidian Pandoc插件:简化文档转换的终极解决方案

Obsidian Pandoc插件&#xff1a;简化文档转换的终极解决方案 【免费下载链接】obsidian-pandoc Pandoc document export plugin for Obsidian (https://obsidian.md) 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-pandoc 还在为文档格式转换而烦恼吗&#xf…

作者头像 李华
网站建设 2026/4/18 8:38:41

AI交互硬件终极指南:ESP32S3智能开发板完整教程

AI交互硬件终极指南&#xff1a;ESP32S3智能开发板完整教程 【免费下载链接】xiaozhi-esp32 Build your own AI friend 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 在当今AI技术飞速发展的时代&#xff0c;拥有一款能够真正理解你、与你互动的智…

作者头像 李华
网站建设 2026/4/18 8:09:56

2025年IDM注册表锁定技术深度解析:永久试用解决方案

2025年IDM注册表锁定技术深度解析&#xff1a;永久试用解决方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager的30天试用期限…

作者头像 李华
网站建设 2026/4/18 10:07:03

彻底告别窗口混乱!这款神器让Mac窗口管理变得如此简单

彻底告别窗口混乱&#xff01;这款神器让Mac窗口管理变得如此简单 【免费下载链接】alt-tab-macos Windows alt-tab on macOS 项目地址: https://gitcode.com/gh_mirrors/al/alt-tab-macos 还在为Mac上繁琐的窗口切换而烦恼吗&#xff1f;&#x1f914; 每次都要在多个…

作者头像 李华