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

如何用OpenCV预处理米白底黑字图像以适配Tesseract文字识别?

OCR识别数字错误问题排查

问题场景

需要提取截图中「Kills」下方的数字文本,但识别结果始终存在偏差:

  • 预期结果:3328387
  • 实际识别结果:3228387

已尝试的处理方案

方案1:灰度转换+阈值处理

使用Tesseract.js结合OpenCV做图像预处理,代码如下:

import { createWorker, OEM, PSM } from "tesseract.js";
import cv from "@u4/opencv4nodejs";
import fs from "node:fs/promises";

const worker = await createWorker("eng", OEM.TESSERACT_LSTM_COMBINED);

await worker.setParameters({
  tessedit_char_whitelist: "0123456789",
  tessedit_pageseg_mode: PSM.SINGLE_BLOCK,
});

const image = await cv.imdecodeAsync(
  await fs.readFile("input.png"),
  cv.COLOR_BGR2GRAY
);

const threshHoldedImage =
  await image.thresholdAsync(
    150,
    255,
    cv.THRESH_BINARY
  );

const blurredImage = await cv.imencodeAsync(".png", threshHoldedImage);

const {
  data: { text: tierKillsText },
} = await worker.recognize(blurredImage, {
  rectangle: {
    top: 265,
    left: 552,
    width: 87,
    height: 138,
  },
});

console.log(tierKillsText);
// 输出: 3228387
// 预期: 3328387

方案2:增加高斯模糊

在阈值处理后添加高斯模糊操作,但问题仍未解决:

const sigma = 0.75;
const blurred = threshHoldedImage.gaussianBlur(new cv.Size(0, 0), sigma);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:17:36