2026/4/18 16:02:17
网站建设
项目流程
为什么网站显示乱码,北大青鸟网站建设课程,手机网站开发调用照片,北京php网站建设Notepad宏脚本#xff1a;自动化调用OCR镜像处理批量图片
#x1f4d6; 项目简介
在日常办公与数据处理中#xff0c;OCR#xff08;光学字符识别#xff09;技术已成为从图像中提取文字信息的核心工具。无论是扫描文档、发票识别#xff0c;还是街景路牌提取#xff…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 接口规范启动镜像后默认开放端口8080API 文档可通过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 rC:\ocr_images # 替换为你的图片目录 OUTPUT_FILE curl_commands.txt API_URL http://localhost:8080/ocr with open(OUTPUT_FILE, w, encodingutf-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 fcurl -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 打开确保系统已安装curlWindows 可通过 Git Bash 或 WSL 获取2. 开始录制宏菜单栏 →宏(M)→开始录制3. 执行一次完整操作假设你在终端环境下运行命令如 CMD 或 PowerShell执行以下动作 - 按Home键跳至行首 - 输入cmd /c或powershell -c - 按End键确保光标在末尾 - 按Enter键换行 - 按方向键下移一行这样就完成了一条命令的“包装 执行 换行”逻辑4. 停止录制并保存宏菜单栏 →宏→停止录制然后点击宏 → 保存当前录制的宏命名为Run_CURL_Line第四步播放宏实现批量执行回到文档顶部全选所有 cURL 命令行CtrlA然后 -宏 → Run a Macro Multiple Times…- 选择Run_CURL_Line- 设置为 “Run until the end of file” - 点击 RunNotepad 将自动为每一行添加执行前缀并逐行发送给系统 shell 执行最终每个图片的识别结果将以output_xxx.jpg.json形式保存在当前目录。 后续结果提取与结构化处理虽然原始输出是 JSON 文件但我们可以通过另一个宏或脚本来提取纯文本内容。示例使用 Notepad 正则替换提取文本假设 JSON 内容如下{result: [{text: 订单编号20240405}, {text: 金额¥998.00}], code: 0}目标提取所有text: xxx中的xxx打开替换窗口CtrlH查找模式text:\s*([^])替换为$1\r\n搜索模式选择“正则表达式”全部替换即可得到订单编号20240405 金额¥998.00再按文件名整理即可形成结构化报表。 性能优化与避坑指南✅ 成功关键点总结| 项目 | 建议 | |------|------| |图像大小控制| 单图建议不超过 2MB避免 Base64 过长导致请求失败 | |分批处理| 若图片过多建议每 20~30 张拆分为一组防止内存溢出 | |错误重试机制| 在 cURL 中加入--retry 3 --retry-delay 2提高稳定性 | |日志分离| 每个输出文件命名唯一避免覆盖 |❌ 常见问题及解决方法| 问题现象 | 可能原因 | 解决方案 | |--------|--------|----------| | cURL 执行中断 | 命令中含有换行符\| 改用单行格式或使用 PowerShell 脚本 | | 返回空结果 | Base64 编码包含头部信息 | 确保只编码图像二进制数据 | | JSON 解析失败 | 输出混杂标准错误流 | 使用2nul屏蔽错误输出 | | 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 导出、邮件通知等模块。 下一步学习建议如果你希望进一步深化这套系统的应用能力建议沿着以下路径深入学习 Flask API 开发了解如何自定义 OCR 接口参数如语言检测、区域裁剪掌握正则表达式高级用法提升从非结构化文本中提取关键字段的能力探索 AutoHotkey 或 SikuliX实现 GUI 级别的全自动化操作适用于无 API 场景集成 into Excel/VBA打造企业级文档处理流水线✨ 最终愿景让每一个普通办公人员都能借助 AI 力量摆脱重复劳动。不需要懂深度学习也能享受 CRNN 带来的高精度 OCR 体验。技术的意义正在于此。