Skip to content

limhao/lab-work

Repository files navigation

title
基于知识细粒度查询设计方案(使用手册)

作者:谢昊

班级:计算机应用技术

项目github地址:https://github.com/limhao/lab-work

1. 使用说明

本系统涉及的环境有点多,本设计将从爬虫获取,知识点提取,知识点展示来说明。

2. 爬虫获取

项目爬虫功能是一个代码开源的软件来完成对应的功能

软件设计清晰 且帮助文档完善

下载网址为:https://www.xuewuzhi.cn/downloader

3. 知识点提取

这个是整个项目的难点和重点

知识点提取 是基于mooc视频中的视频提取

举个例子 在 python程序语言设计中RGB色彩体系这个课中,存在下列两个小的知识点。但是视频并没有对其进行区分。(没有划分出知识点的起始结束时间)

对于该功能的讲解 打算分成三个部分来说明

3.1 项目介绍

项目的文件夹三个 为pic text video 分别存取 图片 文字 视频的信息

重要的py文件有三个 video_pic ,pic_word, json_mysql

分别完成 下面介绍的 3.2 3.3 3.4 的功能

3.2 视频关键帧提取

视频的关键帧提取使用的是 基于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,
		)

3.2.1 使用方式

项目文件为 video_pic

将我们下载好的视频总集 放入video文件夹内

然后修改好 我们要提取的文件夹名称

run 就生成了对应视频总集文件的png

你需要修改的位置

运行的情况

3.3 图片信息提取

图片信息的提取,使用了百度提供的ocr服务,基本手敲了300行代码

这个为项目的难点和核心点

输入:视频关键帧图片

输出:含有课程名称,课件名,知识点(topic),知识点内容(content),起始时间,终止时间的json文件

工作流程:

  1. 先将一个课件名内的图片按时间戳顺序整理
  2. ocr遍历课件内的图片
    1. 图片ocr处理 得到图片文字内容

      1. ocr会返回含有文字的条数 如果条数小于3 则跳过
      2. 文字进行垃圾词清理
      3. 判断文字条数是不是为 0 为0跳过
      4. 和上一个content进行比较 如果存在相同的字段 则不存 若有不同 则添加字段(topic相同)
    2. 当topic 发生改变时候

      1. 将存下上一次topic改变的时间,和这一次topic的修改时间记为起始时间和结束时间
      2. 记下原topic的名称,和content
      3. 存为json存取
    3. 当遍历到最后一个图片时

      1. 将存下上一次topic改变的时间,和这一次topic的修改时间记为起始时间和结束时间
      2. 记下原topic的名称,和content
      3. 存为json存取

3.3.1 使用方式

项目文件: 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语言程序设计"

3.4 json数据转存

通过读取json数据 生成能够插入数据库的.sql文件

输入:知识点json文件

输出:基于课程的sql文件

3.4.1 使用方式

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文件名称

4. 数据库展示

本次的数据库 展示使用的是 jeecgboot来完成我们的数据库展示的功能

其具体的开发开发文档:http://jeecg.com/

比较好的视频文档:https://www.bilibili.com/video/BV1V34y187Y9

展示功能完成了 基于 classname topic main的查询功能

完成了基础的增删改

且能够导入导出exel文档来进行查阅

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published