带有 Tesseract 的空字符串
Empty string with Tesseract
我正在尝试从一个大文件中读取不同的裁剪图像,我设法读取了其中的大部分,但是当我尝试使用 tesseract 读取它们时,其中一些 return 是一个空字符串。
代码就是这一行:
pytesseract.image_to_string(cv2.imread("img.png"), lang="eng")
有什么我可以尝试阅读这类图片的吗?
提前致谢
编辑:
在将图像传递给 pytesseract
之前对图像进行阈值处理可提高准确性。
import cv2
import numpy as np
# Grayscale image
img = Image.open('num.png').convert('L')
ret,img = cv2.threshold(np.array(img), 125, 255, cv2.THRESH_BINARY)
# Older versions of pytesseract need a pillow image
# Convert back if needed
img = Image.fromarray(img.astype(np.uint8))
print(pytesseract.image_to_string(img))
这样打印出来
5.78 / C02
编辑:
仅对第二张图像进行阈值处理 returns 11.1
。另一个有用的步骤是使用配置 --psm 7
将 page segmentation mode 设置为 "Treat the image as a single text line."。在第二张图片 returns 11.1 "202 '
上执行此操作,引号来自顶部的部分文本。要忽略这些,您还可以通过配置 -c tessedit_char_whitelist=0123456789.%
设置使用白名单搜索哪些字符。一切都在一起:
pytesseract.image_to_string(img, config='--psm 7 -c tessedit_char_whitelist=0123456789.%')
这个returns11.1 202
。显然 pytesseract 很难处理那个百分比符号,我不确定如何通过图像处理或配置更改来改进它。
我正在尝试从一个大文件中读取不同的裁剪图像,我设法读取了其中的大部分,但是当我尝试使用 tesseract 读取它们时,其中一些 return 是一个空字符串。
代码就是这一行:
pytesseract.image_to_string(cv2.imread("img.png"), lang="eng")
有什么我可以尝试阅读这类图片的吗?
提前致谢
编辑:
在将图像传递给 pytesseract
之前对图像进行阈值处理可提高准确性。
import cv2
import numpy as np
# Grayscale image
img = Image.open('num.png').convert('L')
ret,img = cv2.threshold(np.array(img), 125, 255, cv2.THRESH_BINARY)
# Older versions of pytesseract need a pillow image
# Convert back if needed
img = Image.fromarray(img.astype(np.uint8))
print(pytesseract.image_to_string(img))
这样打印出来
5.78 / C02
编辑:
仅对第二张图像进行阈值处理 returns 11.1
。另一个有用的步骤是使用配置 --psm 7
将 page segmentation mode 设置为 "Treat the image as a single text line."。在第二张图片 returns 11.1 "202 '
上执行此操作,引号来自顶部的部分文本。要忽略这些,您还可以通过配置 -c tessedit_char_whitelist=0123456789.%
设置使用白名单搜索哪些字符。一切都在一起:
pytesseract.image_to_string(img, config='--psm 7 -c tessedit_char_whitelist=0123456789.%')
这个returns11.1 202
。显然 pytesseract 很难处理那个百分比符号,我不确定如何通过图像处理或配置更改来改进它。