Botty的OCR魔法Tesseract如何识别地面物品词表、正则与纠错机制揭秘【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/bottyBotty 是一款开源的D2R暗黑破坏神2重制版像素机器人它能自动跑图、捡物、换装。但一个看图说话的程序如何分辨地上的文字是 FLAWLESS RUBY无瑕红宝石还是垃圾本文带你揭秘 Botty 基于Tesseract OCR的文字识别体系预训练词表、正则纠错和模糊匹配三层机制如何让一个开源 OCR 引擎稳定读懂暗黑风格像素字体。为什么 OCR 是像素机器人的核心能力D2R 没有对外接口机器人看得见的只有屏幕截图。物品信息名字、等级、词缀全部以像素文字形式存在因此必须借助 OCR光学字符识别把图像转成文本再交给 BNIP 词缀解析引擎判断物品价值。整个图像识别管线位于 src/d2r_image/ 目录核心入口函数是 image_to_text()它完成了图像 → 文本的全过程。第一步两套专门训练的 Tesseract 模型Tesseract 默认不擅长暗黑这种细像素字体。Botty 的解法是自训练模型用真实游戏截图 人工标注的文本样本标注工具见 gen_ocr_samples.py训练出两套 LSTM 模型存放在 assets/tessdata/ground-eng_inconsolata_inv_th_fast识别地面物品名称单行文字hover-eng_inconsolata_inv_th_fast识别悬停提示框多行属性文字模型加载时还会读取 ocr_config.txt对非词表词施加语言模型惩罚——让模型更信任词表里的词这是后面纠错机制的第一道伏笔。第二步图像预处理让像素字变得可读原始截图中物品文字是彩色的、边缘还带着背景噪点。image_to_text() 在送入 Tesseract 前做了一连串处理缩放scale小字体放大后更易识别腐蚀去边erode地面物品专用erode_to_black() 用形态学重建抹掉文字周围的彩色噪点只留下文字裁剪补白crop_pad去掉图块边缘干扰灰度 二值化阈值把图像变成纯黑白反色invert暗黑是白字黑底Tesseract 偏好黑字白底识别地面物品时的实际调用在 processing_helpers.py先按文字颜色聚类定位物品区域再批量送入ground模型psm7表示单行文字模式。第三步三层纠错机制Tesseract 输出只是起点Tesseract 再准也会犯错——I和1、O和0、S和5在像素字体里几乎无法区分。Botty 在 ocr.py 里设计了三层递进的纠错流水线1️⃣ 正则规则修正_fix_regexps针对字母数字混淆写了一组带上下文的正则定义在 ocr_data.py场景示例规则词中的1其实是IW1RTS LEG两侧是大写字母 → 替换为I数字旁的I其实是132I to mana两侧是数字/符号 → 替换为1孤立的I/S/OI TO 5 DEFENSE单独成词 → 替换为1/5/0完整的上下文判断逻辑见 _fix_regexps()。2️⃣ 已知错误映射表_check_known_errors有些词 Tesseract 的错法非常固定直接查表替换。ERROR_RESOLUTION_MAP 里收录了几十个固定错误例如SHIFLD→SHIELDSPFAR→SPEARCLAVMORE→CLAYMOREIOX%→10%3️⃣ 词表模糊匹配_ocr_result_dictionary_check最后一层最聪明把每个词拿去和完整词表做模糊匹配find_best_match() 使用 rapidfuzz 的 Levenshtein 编辑距离归一化相似度 ≥ 0.6 才替换避免错改。它还有一个亮点——前瞻合并如果 OCR 把单词中间的空格读丢了或把两个词读碎S11PER这种算法会尝试当前词 下一个词合并后再匹配词表取更优解详见 _ocr_result_dictionary_check()。词表OCR 的知识库模糊匹配的效果取决于词表质量。Botty 在 assets/word_lists/ 维护了 5500 条词条all_words.txt约 3850 词全部合法词含基础物品、符文、技能与词缀base_items.txt基础装备/武器名称magic_prefixes.txt 与 magic_suffixes.txt魔法前后缀加载逻辑在 strings_store.py带缓存词表同时被注入给 Tesseractuser_words_file和纠错层一份数据两处受益。总结一张图像到物品的完整链路把整条链路串起来Botty 识别一件地面物品的流程是截图 → 颜色聚类定位文字 → 腐蚀/二值化预处理 → Tesseract 自训练模型识别 → 正则修正 → 已知错误查表 → 词表模糊匹配 → BNIP 解析物品价值 → 自动拾取这套模型特化 预处理 三层纠错的组合拳展示了在受限像素字体场景下用好开源 OCR 的完整思路——对任何想给复古像素游戏做图像识别的项目都有很强的参考价值。关键文件速查OCR 核心src/d2r_image/ocr.py正则与错误表src/d2r_image/ocr_data.py地面物品定位管线src/d2r_image/processing_helpers.pyOCR 模型与配置assets/tessdata/词表数据assets/word_lists/开发文档development.md【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/botty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Agent记忆系统分层设计:从瞬时到永久记忆的架构演进与实操 1. Agent 记忆系统的分层设计:从“金鱼脑”到“老司机”的架构演进做 Agent 开发的朋友大概率都遇到过这种尴尬:上一轮对话里用户明明说了“我对花生过敏”,下一轮推荐餐厅时 Agent 还是热情洋溢地推了家花生酱拌面出名的馆子。这不是模型笨&… · 2026/9/26 7:24:57
重复控制RC原理与STM32实战:专治周期性扰动 1. 为什么“重复控制”不是另一个PID,而是专治周期性顽疾的手术刀你有没有遇到过这样的场景:一台精密数控机床在加工圆弧时,每转一圈就在特定角度位置出现微米级的轮廓误差;或者某款伺服驱动器在带动负载做往复运动时,… · 2026/9/26 7:24:57
MP2645A:车规级主动均衡芯片的系统级落地实践 1. 这不是又一篇“原理图 datasheet 搬运工”式文章:MP2645A 是主动均衡落地的分水岭芯片你搜“BMS 主动均衡”,十篇里八篇在讲拓扑——飞电容、变压器隔离、开关电容……讲得头头是道,但一问“真用在量产车上哪颗芯片?”… · 2026/9/26 7:24:57
自托管云开发平台Coder实战:模板、配额与AI编码代理落地 我从2022年底开始在自己的服务器上部署 Coder,当时的动机非常朴素:团队里十几个人分散在三地办公,golang 和前端工程师的本地环境五花八门,每天都要重复听到“我这儿能跑啊”“在我电脑上没问题”。把环境统一起来这件事ÿ… · 2026/9/26 7:57:42
金融服务系统实战:账户、支付、风控与合规全解析 干了几年 financial-services 项目,我总结了一套能直接抄作业的实践经验我最早接触 financial-services 这个词,是在一家中型支付公司做账户系统重构。那会儿以为金融科技就是把支付接口接通、把账算平就完事了,可真上手之后才发现࿰… · 2026/9/26 7:57:42
频率f、角频率ω与周期T的工程本质与换算逻辑 1. 为什么这三个物理量总被放在一起讲?——从一个电机嗡嗡声说起你有没有注意过老式电风扇启动时那低沉的“嗡——”声?或者工厂里大型电机运行时持续不断的50Hz底噪?这个声音不是随机的,它本质上是电流每秒钟完成50次完整正弦振荡… · 2026/9/26 7:57:42
windows下的MinIO的下载与安装 本文环境:windows10、MinIO
一、MinIO的下载
1.中文官网下载:
地址:https://www.minio.org.cn/download.shtml#/windows 2.英文官网下载:
地址:https://www.min.io/download
3.网盘下载
1.minio.exe链接: (1)百… · 2026/9/26 7:57:36
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46