javascript - 如何提高 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");
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 或任何提高准确性的方法?
解决方案
使用 Tesseract 应用 OCR 时,重要的是对图像进行预处理,以便要检测的所需文本为黑色,背景为白色。为此,您可以应用一个简单的阈值来获得二值图像。这是预处理后的图像:
正方体的结果
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()
推荐阅读
- angular - Angular 8:没有 MultilevelMenuService 的提供者
- php - 如何在 PHP 中添加“只读”选项?
- ruby-on-rails - ActiveRecord 方法偏移量无法正常工作
- java - 如何用杰克逊反序列化枚举?
- javascript - 在 JavaScript 中验证数字步数?
- macos - MacOS 上的 .bashrc 和 .bash_profile 有什么关系?
- yaml - Azure 管道接口
- html - 为什么 jQuery UI Spinner 箭头按钮不显示?
- python - Keras MNIST 目标向量自动转换为 one-hot?
- react-native - 我如何在 react-native 中覆盖 css 属性