【问题标题】:Improving the accuracy in number recognition in tesseract-ocr提高 tesseract-ocr 中数字识别的准确性
【发布时间】:2021-02-18 04:32:00
【问题描述】:

我最近在sharp(一个node.js 图像编辑器)的帮助下开始使用tesseract-ocr。在我的算法中,应该对某张图片进行调整大小和裁剪,并获得 tesseract-ocr 识别的剩余图片的内容。这必须在图片的两个单独部分发生两次,在图片的第一部分它可以完美地识别字母所以我不会发布这部分代码,无论如何它与第二部分相同,问题在于第二张图片。它应该读取图片中的这两个数字,它所做的只是读取除这些数字之外的所有内容。

const config = {
  lang: "eng",
  oem: 1,
  psm: 3,
}

let originalImage = `tmp_scrsht.jpg`;
let outputImagelevel = 'levelcropped.jpg'

sharp(originalImage).resize({ height: 1000 }).extract({ width : 300, height:250 , left: 5, top: 500}).threshold(230).toFile(outputImagelevel)
  .then(function(new_file_info) {
      tesseract.recognize(outputImagelevel, config)
      .then(text => {
        console.log(text)
        var newtext = text.split(' ') && text.split('\n') 
        level = newtext[0];
        message.author.send(`number is: ${level}`);
      })
  })

为了让 tesseract 集中在我感兴趣的图像部分,初始图像被调整大小和裁剪。另外,因为我只是裁剪没有运气,所以我读到如果你在图像上设置一个阈值,那么 tesseract 会更有效地读取图片,这很有意义,因为它将图像像素转换为 255 或 0。

在涉及所有这些过滤器的情况下,调用最终图像 tesseract 来读取是这样的:

正如我之前所说,出于某种原因,在大多数图片中,它会忽略数字而只读取其他所有内容,在某些图片中它有效,在某些图片中无效,图片没有一致性或模式它可以识别任何东西。

【问题讨论】:

  • 我没用过psm 3,一般我6-13试试。

标签: node.js discord.js tesseract


【解决方案1】:

尝试设置tessedit_char_whitelist

来自examples

const { createWorker } = require('tesseract.js');

const worker = createWorker();

(async () => {
  await worker.load();
  await worker.loadLanguage('eng');
  await worker.initialize('eng');
  await worker.setParameters({
    tessedit_char_whitelist: '0123456789',
  });
  const { data: { text } } = await worker.recognize('https://tesseract.projectnaptha.com/img/eng_bw.png');
  console.log(text);
  await worker.terminate();
})();

【讨论】:

    猜你喜欢
    • 2021-06-30
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多