我使用 pyautogui 和 pytesseract 的组合来捕获屏幕上的小区域,然后将数字/文本拉出该区域。我编写的脚本可以完美地读取大多数捕获的图像,但个位数似乎会导致问题。例如,包含数字的图像的小区域被保存到 .png 文件中,数字 11、14 和 18 被完美地拉出,但数字 7 只是作为一个空字符串返回。
问题: 什么可能导致这种情况发生?
代码:大幅缩减以使其易于遵循:
def get_text(image):
return pytesseract.image_to_string(image)
answer2 = pyautogui.screenshot('answer2.png',region=(727, 566, 62, 48))
img = Image.open('answer2.png')
answer2 = get_text(img)
Run Code Online (Sandbox Code Playgroud)
此代码重复 4 次,每个图像一次,它适用于 11、14、18,但不适用于 7。
只是为了减慢这里读取的文件的速度,这里是通过屏幕截图命令保存图像后的屏幕截图。
https://gyazo.com/0acbf5be2d970abeb29561113c171fbe
这是我正在工作的屏幕截图:
我发现问题为什么 pytesseract 不能识别单个数字?在评论中我找到了 option --psm 6。
我检查tesseract了选项--psm 6,它可以识别图像上的单个数字。
tesseract --psm 6 number-7.jpg result.txt
Run Code Online (Sandbox Code Playgroud)
我检查pytesseract.image_to_string()了选项config='--psm 6',它也可以识别图像上的单个数字。
#!/usr/bin/env python3
from PIL import Image
import pytesseract
img = Image.open('number-7.jpg')
print(pytesseract.image_to_string(img, config='--psm 6'))
Run Code Online (Sandbox Code Playgroud)