一、第三方库pytesseract下载
Tesseract,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。
作者:SyKay
链接:https://www.jianshu.com/p/f7cb0b3f337a
来源:简书
1、手动安装tesseract-ocr
Tesseract-ocr下载地址为:https://digi.bib.uni-mannheim.de/tesseract/ ,建议下载最新稳定版本:
tesseract-ocr-w64-setup-v5.0.0.20190623.exe
注:安装时就按照提示进行即可,不要点击下载额外的语言包,如果下载多余的语言包下载速度会很慢。
2、设置可执行文件的路径
点击上图 "系统变量"中的 "path”并点击编辑
如上图所示,在编辑环境变量中增加一个路径并确定。
3、检查是否正确安装
把语言文件拷贝到此处tessdata目录下【这是我的路径:C:\Program Files\Tesseract-OCR\tessdata,大家先找到Tesseract-OCR就比较容易了】,并在cmd中进行检查
注:cmd中还是需要先定位到Tesseract-OCR再检查
修改cmd的定位: cd+路径
检测语言为:tesseract –v 测试安装
tesseract --list-langs测试语言包
结果如图即为正确安装(小编也不知道错误安装的截图)
上部分为语言,下部分为版本说明
4、直接在cmd里面直接pip install pytesseract 即可
二、字幕识别代码
1、原理解释
不同视频我们需要根据不同的字幕时间间隔进行抽帧
2、字幕识别
import pytesseract
import cv2
import numpy as np
from scipy import stats
import os
import matplotlib.pyplot as plt
if __name__ == '__main__':
print(os.path.abspath(','))
path = "20210701.mp4"
print(path)
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)
shape = frame.shape
print(shape)
cv2.imshow("Frame-1", frame[580:630, 10:1270])
plt.imshow(frame)
plt.axis("off")
plt.show()
img=frame[630:680, 50:1270]
plt.imshow(img)
plt.axis("off")
plt.show()
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图
cv2.imshow("Frame-2:Gray", img) #显示灰度图
_, img= cv2.threshold(img, 220, 255, cv2.THRESH_BINARY) # 图像,阈值,映射的最大值,使用什么算法一般为cv2.thresh_binary
cv2.imshow("Frame-3:Binary", img) #显示灰度图
tessdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata" --psm 7 -c preserve_interword_spaces=1'
word = pytesseract.image_to_string(img,
lang='chi_sim',
config=tessdata_dir_config)
print(word)
i=i+24*2#隔2秒抽一帧
if cv2.waitKey(10) & 0xff == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
结果如下: