You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:48:23