目录
一、安装Tesseract OCR V5.0
1、下载tesseract程序
从下载地址Index of /tesseract ,下载最新稳定版本:tesseract-ocr-w64-setup-v5.0.0.20190623.exe
2、 安装语言包
安装过程可以附带选择要安装的语言包(下载速度较慢),或安装结束后拓展语言包(拷贝到tessdata目录下)
3、设置环境变量
Win+R打开命令行,输入sysdm.cpl打开设置Path的窗口,编辑Path,新建D:\Program Files\Tesseract-OCR
4、检查是否安装成功
tesseract –v 测试安装
tesseract --list-langs 测试语言包
二、 视频字幕识别
操作步骤:
- 获取视频,逐帧截取图像字幕范围
- cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)灰度化
- cv2.threshold(img, 220, 255, cv2.THRESH_BINARY)二值化
- pytesseract.image_to_string将图像上的Tesseract OCR运行结果返回到字符串
完整代码:
import pytesseract
import cv2
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
if __name__ == '__main__':
path = "20210701.mp4"
cap = cv2.VideoCapture(path)
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print(frame_count)
i=0
while i<frame_count:
cap.set(cv2.CAP_PROP_POS_FRAMES, i)
_, frame = cap.read(i)
if i==48:
cv2.imwrite('20210701.jpg',frame)
shape = frame.shape #帧的尺寸/分辨率
print(shape)
img=frame[630:680, 50:1270]
plt.imshow(img)
plt.axis("off")
plt.show()
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图
_, img= cv2.threshold(img, 220, 255, cv2.THRESH_BINARY) # 灰度图(黑白二值)
tessdata_dir_config = '--tessdata-dir "C:\\Tesseract-OCR\\tessdata" --psm 7 -c preserve_interword_spaces=1'
word = pytesseract.image_to_string(img,
lang='chi_sim',
config=' --psm 7 -c preserve_interword_spaces=1')
print(word)
i=i+24*2 #2秒抽一帧
if cv2.waitKey(10) & 0xff == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
运行结果:
函数使用:
cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst
src 图片源
thresh 阈值(起始值)
maxval 最大值
type 划分的时候使用什么类型的算法,常用值为cv2.THRESH_BINARY
问题总结与记录:
出现报错:
解决方案:
1、参照链接,多处修改
2、注意config=' --psm 7 -c preserve_interword_spaces=1'