【发布时间】: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