【发布时间】:2021-04-26 14:44:10
【问题描述】:
我有兴趣从标准化视频(始终高清分辨率 @ 1920x1080,30 FPS)中提取数字。数字总是出现在屏幕的固定部分,并且永远不会丢失。
我的方法是:
- 以 PNG 格式逐帧保存视频
- 加载单个 PNG 帧
- 选择感兴趣的领域(有四个部分我想要
从中提取数字;每个部分可能需要自己的图像处理;总是在完全相同的像素范围内) - 使用 Python 和 Tesseract-OCR 提取数字
- 在数据框中存储值
其中两个部分的示例是:
我已经安装了 Python(我是 R 用户)和 tesseract,并且可以很好地运行 Tesseract 示例(即我已经确认我的设置有效)。
但是,当我在顶部图像上运行以下命令时 [247] Tesseract 无法提取数字,而您认为它很容易提取,因为文本非常清晰。
from PIL import Image
import pytesseract
import os
import cv2
import argparse
img = cv2.imread("C:/Users/Luc/Videos/Monza GR4 1.56.156/frames/frame1060_speed.png")
cv2.imshow("RAW", img)
cv2.waitKeyEx(0)
cv2.destroyWindow()
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.imshow("RBG", imgRGB)
cv2.waitKeyEx(0)
cv2.destroyWindow()
imgBW2WB = cv2.bitwise_not(imgRGB)
cv2.imshow("White black swapped", imgBW2WB)
cv2.waitKeyEx(0)
cv2.destroyWindow()
(thresh, blackAndWhiteImage) = cv2.threshold(imgBW2WB, 127, 255, cv2.THRESH_BINARY)
cv2.imshow("Remove some noise", blackAndWhiteImage)
cv2.waitKeyEx(0)
cv2.destroyWindow()
pytesseract.image_to_string(blackAndWhiteImage,
config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
输出是:
pytesseract.image_to_string(blackAndWhiteImage,
config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
Out[15]: '7\n\x0c'
【问题讨论】:
-
我猜你使用的是最新的 tesseract?旧的很糟糕......
-
我正在使用 Tesseract V5.0.0 和 Python 3.8.5
标签: python ocr tesseract python-tesseract