title |
---|
基于知识细粒度查询设计方案(使用手册) |
作者:谢昊
班级:计算机应用技术
项目github地址:https://github.com/limhao/lab-work
本系统涉及的环境有点多,本设计将从爬虫获取,知识点提取,知识点展示来说明。
项目爬虫功能是一个代码开源的软件来完成对应的功能
软件设计清晰 且帮助文档完善
下载网址为:https://www.xuewuzhi.cn/downloader
这个是整个项目的难点和重点
知识点提取 是基于mooc视频中的视频提取
举个例子 在 python程序语言设计中RGB色彩体系这个课中,存在下列两个小的知识点。但是视频并没有对其进行区分。(没有划分出知识点的起始结束时间)
对于该功能的讲解 打算分成三个部分来说明
项目的文件夹三个 为pic text video 分别存取 图片 文字 视频的信息
重要的py文件有三个 video_pic ,pic_word, json_mysql
分别完成 下面介绍的 3.2 3.3 3.4 的功能
视频的关键帧提取使用的是 基于ffmpeg的pyav库来进行存取
输入:视频
输出:视频关键帧图片(名称含有视频关键帧时间)
关键代码:
def extract_video(filename):
container = av.open(filename)
# Signal that we only want to look at keyframes.
stream = container.streams.video[0]
stream.codec_context.skip_frame = 'NONKEY'
# default 不能用
# stream.codec_context.skip_frame = 'DEFAULT'
for frame in container.decode(stream):
# 这里应该能管到时间戳
frame.to_image().save(
'{}.png'.format((frame.pts/100000), '.1f'),
quality=80,
)
项目文件为 video_pic
将我们下载好的视频总集 放入video文件夹内
然后修改好 我们要提取的文件夹名称
run 就生成了对应视频总集文件的png
你需要修改的位置
运行的情况
图片信息的提取,使用了百度提供的ocr服务,基本手敲了300行代码
这个为项目的难点和核心点
输入:视频关键帧图片
输出:含有课程名称,课件名,知识点(topic),知识点内容(content),起始时间,终止时间的json文件
工作流程:
- 先将一个课件名内的图片按时间戳顺序整理
- ocr遍历课件内的图片
-
图片ocr处理 得到图片文字内容
- ocr会返回含有文字的条数 如果条数小于3 则跳过
- 文字进行垃圾词清理
- 判断文字条数是不是为 0 为0跳过
- 和上一个content进行比较 如果存在相同的字段 则不存 若有不同 则添加字段(topic相同)
-
当topic 发生改变时候
- 将存下上一次topic改变的时间,和这一次topic的修改时间记为起始时间和结束时间
- 记下原topic的名称,和content
- 存为json存取
-
当遍历到最后一个图片时
- 将存下上一次topic改变的时间,和这一次topic的修改时间记为起始时间和结束时间
- 记下原topic的名称,和content
- 存为json存取
-
项目文件: pic_word
通过百度智能云 获得对应的api_key 和 secret_key
https://cloud.baidu.com/doc/OCR/s/dk3iqnq51
API_KEY = 'ZOYegM165651651zf13suG2'
SECRET_KEY = '6HjW4xdUWw9MXoaVT6514896161WpZw'
OCR_URL = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic'
填入自己要获取课程知识点的课程名称
className = "python语言程序设计"
通过读取json数据 生成能够插入数据库的.sql文件
输入:知识点json文件
输出:基于课程的sql文件
className = "python语言程序设计"
word_root = os.path.join(os.getcwd(), 'text')
classWordRoot = os.path.join(word_root, className)
sqlRoot = os.path.join(os.getcwd(), 'knowledgeSearch.sql')
在使用的时候 需要填入对应的className 和sqlroot 想要生成的sql文件名称
本次的数据库 展示使用的是 jeecgboot来完成我们的数据库展示的功能
其具体的开发开发文档:http://jeecg.com/
比较好的视频文档:https://www.bilibili.com/video/BV1V34y187Y9
展示功能完成了 基于 classname topic main的查询功能
完成了基础的增删改
且能够导入导出exel文档来进行查阅