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

NodeJS中Jimp写入图片延迟,Tesseract读取旧文件问题求助

解决Jimp写入文件延迟导致Tesseract读旧图的问题

核心问题是Jimp的文件写入是异步操作,你必须确保写入完全完成后再调用Tesseract识别,硬编码延迟不可靠,要通过Promise/async await正确处理异步流程。

完整可行代码示例

const Jimp = require('jimp');
const Tesseract = require('tesseract.js');
const robot = require('robotjs'); // 用robotjs做屏幕截取,可替换为其他截图库

async function screenCaptureAndOCRWorkflow() {
  // 1. 截取屏幕
  const screenSize = robot.getScreenSize();
  const screenBitmap = robot.screen.capture(0, 0, screenSize.width, screenSize.height);

  // 将截图数据转为Jimp对象
  const jimpImage = new Jimp(screenSize.width, screenSize.height);
  let pixelPos = 0;
  jimpImage.scan(0, 0, jimpImage.bitmap.width, jimpImage.bitmap.height, (x, y, idx) => {
    jimpImage.bitmap.data[idx + 2] = screenBitmap.image[pixelPos++];
    jimpImage.bitmap.data[idx + 1] = screenBitmap.image[pixelPos++];
    jimpImage.bitmap.data[idx] = screenBitmap.image[pixelPos++];
    jimpImage.bitmap.data[idx + 3] = screenBitmap.image[pixelPos++];
  });

  // 2. 等待图片写入磁盘完成
  await jimpImage.writeAsync('image.png'); // 使用writeAsync返回Promise,await确保写入完成

  // 3. Tesseract识别图片文本
  const ocrResult = await Tesseract.recognize('image.png', 'eng', {
    logger: msg => console.log(msg.status) // 可选,打印识别进度
  });
  const recognizedText = ocrResult.data.text;

  // 4. 搜索目标字符串并执行操作
  const targetStr = '你要找的字符串';
  if (recognizedText.includes(targetStr)) {
    console.log(`找到目标: ${targetStr}`);
    // 这里写找到后的操作,比如模拟点击、发送指令等
    robot.keyTap('enter');
  } else {
    console.log(`未找到目标: ${targetStr}`);
    // 未找到时的操作
  }
}

// 执行流程并捕获错误
screenCaptureAndOCRWorkflow().catch(err => {
  console.error('流程执行出错:', err);
});

关键注意事项

  • 用writeAsync代替write:Jimp的write是回调式API,writeAsync返回Promise,配合await能确保文件完全写入磁盘后再执行后续逻辑,这是解决旧图问题的核心。
  • 全流程异步控制:把所有步骤放在async函数里,每个异步操作(截图处理、文件写入、OCR识别)都用await等待完成,保证执行顺序正确。
  • 放弃硬编码延迟:setTimeout的延迟时间无法匹配不同系统的IO速度,完全不可靠,必须用异步机制等待操作完成。
  • 错误捕获:在主函数末尾用catch捕获整个流程的错误,方便定位问题。

内容的提问来源于stack exchange,提问作者Kelvin gaston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:05:20