Javascript 如何提高tesseract.js的准确性?

Javascript 如何提高tesseract.js的准确性?,javascript,node.js,typescript,ocr,tesseract.js,Javascript,Node.js,Typescript,Ocr,Tesseract.js,我用的是网站上的这段代码,但不够准确 const worker1 = createWorker(); const worker2 = createWorker(); await worker1.load(); await worker2.load(); await worker1.loadLanguage("eng"); await worker2.loadLanguage("eng"); await worker1.initialize("eng"); awai

我用的是网站上的这段代码,但不够准确

 const worker1 = createWorker();
  const worker2 = createWorker();

  await worker1.load();
  await worker2.load();
  await worker1.loadLanguage("eng");
  await worker2.loadLanguage("eng");
  await worker1.initialize("eng");
  await worker2.initialize("eng");

  scheduler.addWorker(worker1);
  scheduler.addWorker(worker2);

  /** Add 10 recognition jobs */
  const {
    data: { text }
  } = await scheduler.addJob("recognize", image);

这是我试图读取其文本的图像类型:

你觉得它简单易懂,有时泰瑟拉特看不懂。
是否有更好的替代tesseract.js的方法或任何提高准确性的方法?

当使用tesseract应用OCR时,重要的是对图像进行预处理,以便要检测的所需文本为黑色,背景为白色。为此,您可以应用一个简单的阈值来获得二值图像。以下是预处理后的图像:

来自Tesseract的结果

52024
我在Python OpenCV中实现了这种方法,但是您可以将类似的策略应用到Javascript中

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# Load image and Otsu's Threshold to get a binary image
image = cv2.imread('1.png', 0)
thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# Perform OCR
data = pytesseract.image_to_string(thresh, lang='eng', config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.waitKey()

您是否尝试过对输入图像应用一些过滤,例如增强对比度或放大对比度?我认为获得更高精度的一种方法是对输入图像进行一些修改。你可以从这篇文章开始:增加对比度、图像锐化、去除噪声是一些基本的图像增强,可能有助于获得更高精度的结果。此外,你可能需要检查阈值过滤。例如,看看这段代码:你也可以深入研究边缘检测算法,比如Sobel算法或Canny算法。另外,额外的gamma校正看起来很有希望。谢谢你的回答,你知道有什么特殊的node js库可以实现这一点吗?使用jimp,我反转了颜色,精度真的提高了,我认为这对于我当前的项目来说已经足够了,但我仍然需要一些好的库来在node js中实现这一点,无论如何,谢谢你的回答。不幸的是,我对node.js不太熟悉,但一旦找到了node.js,就可以采用相同的方法。祝你好运感谢关于Jimp的提示;我不确定为什么不能移植它,但我发现了一些类似的东西,并在Node.js上运行: