如何使用Node.js获取图像中指定文本的坐标?
如何获取图像中指定文本的坐标?
我需要检测图像中X:input Y:input格式文本的位置(示例中预期坐标约为714, 164, 125, 32,即x, y, 宽, 高),目前尝试用Tesseract和Jimp实现,但不确定返回的data是否包含所需坐标,也想了解其他可用的辅助库。
用Tesseract提取坐标的方法
Tesseract返回的data里确实包含文本的位置信息,你可以通过data.words数组获取每个识别文本的边界框。调整代码如下:
const worker = await Tesseract.createWorker(); await worker.loadLanguage("eng"); await worker.initialize("eng"); const convertedImage = await image .grayscale() .getBufferAsync(Jimp.MIME_PNG); // 白名单需包含冒号,同时设置页面分割模式提升识别精度 await worker.setParameters({ tessedit_char_whitelist: "XY012345678:", tessedit_pageseg_mode: 6 }); const { data } = await worker.recognize(convertedImage); // 筛选匹配目标格式的文本 const targetText = data.words.find(word => /^X:\d+ Y:\d+$/.test(word.text) // 可根据input实际格式调整正则规则 ); if (targetText) { const { bbox } = targetText; // 转换为x, y, 宽, 高的格式 const x = bbox.x0; const y = bbox.y0; const width = bbox.x1 - bbox.x0; const height = bbox.y1 - bbox.y0; console.log(`目标文本坐标:${x}, ${y}, ${width}, ${height}`); } else { console.log("未找到目标文本"); } await worker.terminate();
关键说明
data.words中的每个元素包含text(识别出的文本内容)和bbox(边界框信息,结构为{x0, y0, x1, y1},对应左上角和右下角坐标)。- 通过正则匹配筛选出目标格式的文本,再从
bbox计算出宽高即可得到所需的坐标格式。
其他可用辅助库
- OpenCV.js:擅长图像预处理(阈值化、降噪、轮廓检测等),可先优化图像质量再交给OCR识别,也支持模板匹配(若目标文本样式固定)。
- EasyOCR:轻量级OCR库,API简洁无需复杂配置,直接返回文本及对应边界框,支持多语言,适合快速开发。
- Sharp:高性能图像处理库,替代Jimp处理图像,对大尺寸图片的处理效率更高,可配合Tesseract完成预处理步骤。
内容的提问来源于stack exchange,提问作者user21203895
相关产品推荐
相关产品推荐

