Tesseract.js 遇到 Invalid resolution 0 dpi 警告如何通过 user_defined_dpi 解决
Tesseract.js 遇到 Invalid resolution 0 dpi 警告如何通过 user_defined_dpi 解决【免费下载链接】tesseract.jsPure Javascript OCR for more than 100 Languages 项目地址: https://gitcode.com/GitHub_Trending/te/tesseract.js在 Tesseract.js 中对图片执行 OCR 识别时日志里可能出现这样一条警告Warning: Invalid resolution 0 dpi. Using 70 instead.它表示引擎读到的图片分辨率是 0 dpi随后回退按 70 dpi 处理。API 文档在worker.setParameters的常用参数表中明确列出user_defined_dpi用于修复这条警告。本文以 Node.js 为例说明如何复现并观察该警告、如何通过setParameters设置user_defined_dpi以及如何确认修复生效。准备条件安装 Tesseract.js。文档说明 v7 版本要求 Node.js v16 或更高v6 要求 Node.js v14 或更高见 README.mdnpm install tesseract.js复现并观察警告警告出现在 worker 的日志中。要看到这些日志可以在createWorker的 options 中传入logger函数API 文档给出的示例是m console.log(m)const { createWorker } require(tesseract.js); const worker await createWorker(eng, 1, { logger: m console.log(m), });此时对一张分辨率为 0 dpi 的图片调用worker.recognize日志中就会打印Warning: Invalid resolution 0 dpi. Using 70 instead.用 user_defined_dpi 修复警告worker.setParameters(params)用于通过 Tesseract 引擎的SetVariable()设置参数。API 文档的 Useful Parameters 表中列出了本参数nametypedefault valuedescriptionuser_defined_dpistringDefine custom dpi, use to fixWarning: Invalid resolution 0 dpi. Using 70 instead.TypeScript 声明中它也是WorkerParams的 string 字段见 src/index.d.ts。修复方法是在createWorker之后、recognize之前调用worker.setParameters把user_defined_dpi设为你图片实际使用的 dpi。注意两点文档要求该参数以字符串形式传入文档没有给出推荐数值取值取决于你处理的图片。完整示例150为示例值请替换为你图片实际的 dpipath/to/your-image.png替换为你自己的图片路径const { createWorker } require(tesseract.js); (async () { const worker await createWorker(eng, 1, { logger: m console.log(m), }); // 文档说明该参数类型为 string150 为示例值按图片实际 dpi 替换 await worker.setParameters({ user_defined_dpi: 150, }); const { data: { text } } await worker.recognize(path/to/your-image.png); console.log(text); await worker.terminate(); })();setParameters的写法与 examples.md 中 whitelist 示例一致先 awaitsetParameters再执行recognize。验证修复是否生效用同样的logger配置重新运行识别查看日志Warning: Invalid resolution 0 dpi. Using 70 instead.不再出现即说明user_defined_dpi已按文档描述修复了该警告同时确认recognize返回的data.text中能拿到预期的识别文本。限制说明user_defined_dpi通过worker.setParameters设置不属于 init only 参数。文档提醒Tesseract 文档中标记为 init only 的参数如load_system_dawg无法通过setParameters或recognize设置见 docs/api.md。Useful Parameters 列表并不完整。Tesseract.js 会把参数透传给底层 Tesseract 引擎因此底层版本支持的其他参数一般也可用但具体行为以 Tesseract 主项目文档为准而不是本仓库见 docs/faq.md 中 What configuration settings should I use? 一节。user_defined_dpi只解决 dpi 元数据问题。如果图片分辨率本身偏低导致识别效果不佳API 文档建议在调用recognize前将图片放大upscale同样的图片通常能取得更好的结果。【免费下载链接】tesseract.jsPure Javascript OCR for more than 100 Languages 项目地址: https://gitcode.com/GitHub_Trending/te/tesseract.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →