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

Posted

技术标签:

【中文标题】如何提高 tesseract.js 的准确性?【英文标题】:How to improve tesseract.js accuracy? 【发布时间】:2020-03-26 07:29:02 【问题描述】:

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

 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 无法阅读它。 是否有更好的替代 tesseract.js 或任何提高准确性的方法?

【问题讨论】:

您是否尝试过对输入图像应用一些过滤,以增强对比度,例如或放大它们?我认为获得更高准确性的一种方法是对输入图像进行一些修改。 您可以从这篇文章开始:docparser.com/blog/improve-ocr-accuracy 增加对比度、图像锐化、去除噪点是一些基本的图像增强功能,可以帮助您获得更好的准确度结果。 此外,您可能需要检查阈值过滤。请参阅此代码,例如:github.com/laurenzcodes/Canvas-Threshold-Effect 您还可以深入研究边缘检测算法,例如 Sobel 算法或 Canny 算法。 我使用了您的图片的负片版本,效果很好。此外,额外的伽马校正看起来很有希望。 【参考方案1】:

使用 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()

【讨论】:

谢谢你的回答,你知道有什么特殊的node js库来实现吗? 使用 jimp 我反转了颜色,准确性得到了真正的提高,我认为这对我当前的项目来说已经足够了,但我仍然需要一些好的库来在 node js 中做到这一点,无论如何感谢你的回答。 不幸的是,我对 node.js 不太熟悉,但是一旦你找到了一个,你就可以采用相同的方法。祝你好运! 感谢有关 Jimp 的提示;我不确定为什么不能移植它,但我发现了一些看起来相似并在 Node.js 上运行的东西:Nimp

以上是关于如何提高 tesseract.js 的准确性?的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 EasyOCR 的准确性/预测?

带有 Node.js 的 Heroku 上的 Tesseract-OCR

新手:如何评估模型以提高分类模型的准确性

如何提高 ARKit 测量两个 SCNNode 之间距离的准确性?

如何提高前馈神经网络的准确性?

如何提高matlab中决策树的准确性