)
Tesseract.js 如何用 worker.detect 检测图片文字方向与书写系统OSD【免费下载链接】tesseract.jsPure Javascript OCR for more than 100 Languages 项目地址: https://gitcode.com/GitHub_Trending/te/tesseract.js当你拿到一批来源不确定的图片在跑完整 OCR 之前需要先判断图片里的文字是什么书写系统、方向是否正确时Tesseract.js 提供的worker.detect可以完成这个任务它对图片执行 OSDOrientation and Script Detection方向与书写系统检测而不是像worker.recognize那样做文字识别。适用环境为浏览器或 Node.jsTesseract.js v7 要求 Node.js v16 或更新版本见 README.md核心前提只有一个但很关键worker.detect需要支持 Tesseract Legacy 的代码与语言数据而这不是默认开启的docs/api.md。准备工作安装与图片输入要求在 Node.js 环境中安装# For latest version npm install tesseract.js yarn add tesseract.jsworker.detect(image, jobId)的第一个参数是image其格式与数据类型限制和recognize相同定义在 docs/image-format.md支持的图片格式bmp, jpg, png, pbm, webp, gifgif 限非动画浏览器与 Node 通用base64 编码的 data URL 字符串、buffer浏览器额外支持File/Blob、img/canvas元素Node 额外支持本地图片路径字符串。注意格式与数据类型必须同时满足例如包含 png 图片的 buffer 受支持包含裸像素数据的 buffer 不受支持。创建支持 OSD 的 workerworker.detect的硬性要求worker 的代码core和语言数据traineddata都必须包含 Tesseract Legacy 支持而默认下载的是 LSTM-only 版本。因此必须在createWorker的 options 中把legacyCore和legacyLang都设为truedocs/api.mdconst { createWorker } Tesseract; (async () { const worker await createWorker(eng, 1, {legacyCore: true, legacyLang: true}); const { data } await worker.detect(image); console.log(data); })();两个选项的作用在 API 文档中的定义legacyCore: true确保下载的 core 代码支持 Legacy 模型在 LSTM 模型之外legacyLang: true确保下载的语言数据支持 Legacy 模型。缺了这两项worker 就无法执行 OSD。关于语言与 OEM 参数仓库内存在两种写法都来自项目自身资料使用时注意区别上面 docs/api.md 的示例使用createWorker(eng, 1, ...)英文语言 LSTM_ONLY 模式项目自己的测试 tests/detect.test.mjs 则使用Tesseract.createWorker(osd, 0, OPTIONS)即专门的osd语言数据 OEMTESSERACT_ONLY值为 0见 src/constants/OEM.js。被标记为 deprecated 的顶层detect()函数内部也是按createWorker(osd, 0, options)实现的见 src/Tesseract.js。两种写法的关键共同点是语言/代码数据必须支持 Legacy若按官方 API 文档的示例照抄用legacyCore/legacyLang即可满足。调用 detect 并核对结果调用完成后返回值是包含jobId与data的对象OSD 结果在data中。项目测试中从结果里取出的是script字段书写系统// tests/detect.test.mjs 中的断言方式 const { data: { script: s } } await worker.detect(${IMAGE_PATH}/cosmic.png); expect(s).to.be(Latin);对应的验证方式即仓库测试给出的判定对tests/assets/images/cosmic.png这张拉丁字母图片测试期望data.script为Latin。你可以在自己的环境里跑同一张图片若拿到的script与图片实际书写系统一致说明 OSD 链路工作正常完整data对象可以像 api.md 示例那样直接console.log查看。测试中还展示了顶层简写接口Tesseract.detect(image, OPTIONS)其功能与worker.detect相同但 docs/api.md 已明确将其标记为 deprecated并说明它每次调用都会新建、加载并销毁一个 worker——新代码应统一使用worker.detect。可选通过 scheduler 批量执行 detect如果你用多个 worker 并行处理任务scheduler 的addJob目前支持recognize和detect两种 actiondocs/api.mdconst { data } await scheduler.addJob(detect, image);前提与直接调用相同加入 scheduler 的 worker 必须由带legacyCore: true, legacyLang: true选项的createWorker创建否则 worker 不具备执行 OSD 的条件。清理与限制任务结束后调用await worker.terminate()终止 worker 并清理资源docs/api.md。worker.detect只返回 OSD 结果不做文字识别识别仍需调用worker.recognize两者互不替代。worker.detect不接受recognize那样的options/output参数API 文档中它只有image和jobId两个参数。顶层detect()已废弃不要在worker.detect可用时继续使用。下一步如果 OSD 结果不理想例如方向判断错误docs/api.md 中worker.recognize的 TIP 提示图片分辨率不足时放大后再处理往往能得到更好的结果——这条建议同样适用于送入detect的图片输入。【免费下载链接】tesseract.jsPure Javascript OCR for more than 100 Languages 项目地址: https://gitcode.com/GitHub_Trending/te/tesseract.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考