【Python-MP4文体提取】

news2024/11/24 5:01:38

Python-MP4文体提取

  • ■ pip 和 setuptools工具
  • ■ OpenCV和Tesseract
  • ■ Tesseract OCR V5.0安装教程(Windows)
    • ■ 1. 运行程序出现如下问题:我们需要安装Tesseract OCR
    • ■ 2. 下载Tesseract-OCR
    • ■ 3. 安装Tesseract-OCR
    • ■ 4. 添加到环境变量的系统变量(PATH)去
    • ■ 5. 增加一个TESSDATA_PREFIX变量名,
    • ■ 6. 打开终端,输入:tesseract -v,可以看到版本信息
    • ■ 7. 在pytesseract库下的pytesseract.py文件中找到tesseract_cmd = 'tesseract',修改成 tesseract_cmd =r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    • ■ 8. 再去运行程序
  • ■ 运行代码
  • ■ 运行代码2-openAI生成的

■ pip 和 setuptools工具

先对 pip 和 setuptools工具更新最新版本

python.exe -m pip install --upgrade pip setuptools   
或
pip install --upgrade pip setuptools

■ OpenCV和Tesseract

使用以下命令安装OpenCV和Tesseract:

pip install opencv-python
pip install tesseract

■ Tesseract OCR V5.0安装教程(Windows)

■ 1. 运行程序出现如下问题:我们需要安装Tesseract OCR

在这里插入图片描述

■ 2. 下载Tesseract-OCR

官方网站:https://github.com/tesseract-ocr/tesseract
官方文档:https://github.com/tesseract-ocr/tessdoc
语言包地址:https://github.com/tesseract-ocr/tessdata
下载地址:https://digi.bib.uni-mannheim.de/tesseract/

下载地址
在这里插入图片描述

■ 3. 安装Tesseract-OCR

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

■ 4. 添加到环境变量的系统变量(PATH)去

在这里插入图片描述

■ 5. 增加一个TESSDATA_PREFIX变量名,

增加一个TESSDATA_PREFIX变量名,变量值还是我的安装路径C:\Program Files\Tesseract-OCR\tessdata这是将语言字库文件夹添加到变量中;
在这里插入图片描述

■ 6. 打开终端,输入:tesseract -v,可以看到版本信息

在这里插入图片描述

■ 7. 在pytesseract库下的pytesseract.py文件中找到tesseract_cmd = ‘tesseract’,修改成 tesseract_cmd =r’C:\Program Files\Tesseract-OCR\tesseract.exe’

在这里插入图片描述
我的路径
D:\software\Python\Python312\Lib\site-packages\pytesseract
在这里插入图片描述

■ 8. 再去运行程序

在这里插入图片描述
结果提取的数据不符合预期要求

■ 运行代码

import cv2
import pytesseract
import re

# 读取视频文件
def extract_frames(video_path):
    cap = cv2.VideoCapture(video_path)
    
    frames = []
    
    while cap.isOpened():
        ret, frame = cap.read()
        
        if not ret:
            break
        
        frames.append(frame)
    
    cap.release()
    
    return frames

# 文字识别
def recognize_text(image):
    text = pytesseract.image_to_string(image)
    
    return text

# 降噪声或错误的字符
def process_text(text):
    processed_text = re.sub(r'\s+|[^\w\s]', '', text)
    
    return processed_text

#video_path = 'E:\PythonProject\tcipy\1111111111.mp4'
video_path = '1111111111.mp4'

frames = extract_frames(video_path)

for frame in frames:
    text = recognize_text(frame)
    processed_text = process_text(text)
    print(processed_text)

print('OK')

■ 运行代码2-openAI生成的

import cv2
import pytesseract
from pytesseract import Output
import pandas as pd

# 打开MP4文件
cap = cv2.VideoCapture('video.mp4')

# 检查文件是否成功打开
if not cap.isOpened():
    print("Error: Could not open video file.")
    exit()

# 使用Tesseract进行OCR
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 初始化表格
data = {'Frame Number': [], 'Text': []}

# 读取视频并解析文字内容
frame_number = 0
while True:
    # 从文件中读取一帧
    ret, frame = cap.read()

    # 检查是否成功读取帧
    if not ret:
        print("Error: Could not read frame.")
        break

    # 进行文字识别
    d = pytesseract.image_to_data(frame, output_type=Output.DICT)

    # 提取识别到的文字
    for i in range(len(d['text'])):
        text = d['text'][i].strip()
        if text:
            data['Frame Number'].append(frame_number)
            data['Text'].append(text)

    frame_number += 1

# 释放资源
cap.release()

# 创建DataFrame
df = pd.DataFrame(data)

# 输出DataFrame到CSV文件
df.to_csv('text_from_video.csv', index=False)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1588495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux磁盘扩容并设置挂载点

背景 使用pve创建了一个虚拟机,各种环境配置都安装好了之后发现分配的磁盘空间太小了,默认的就30多个G,这还没咋玩呢就满了,像扩容却找遍了这个pve都没找到扩容按钮,并且我这个磁盘不是lvm结构的,所以好像…

01攻防世界web-Training-WWW-Robots

写在前面: 一入网安深似海,学习需要毅力和强大的坚持。 1.Training-WWW-Robots 题目 解题过程 访问网址后面加上/robots.txt 进入fl0g.php文件,找到flag 相关知识点1.Robots: 理解一下robotS文件中的user-agent: 以及Disallow…

学习Rust的第三天:猜谜游戏

Welcome to the third day of learning rust, I am referring to the book “The Rust Programming Language” by Steve Klabnik. Today we build a guessing game in rust. 欢迎来到学习Rust的第三天,基于Steve Klabnik的《The Rust Programming Language》一书。…

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成 目录 数据生成 | Matlab实现基于SNN浅层神经网络的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于SNN浅层神经网络的数据生成,运行环境Matlab2021b及以上; …

微软卡内基梅隆大学:无外部干预,GPT4等大语言模型难以自主探索

目录 引言:LLMs在强化学习中的探索能力探究 研究背景:LLMs的在情境中学习能力及其重要性 实验设计:多臂老虎机环境中的LLMs探索行为 实验结果概览:LLMs在探索任务中的普遍失败 成功案例分析:Gpt-4在特定配置下的探…

TS在interface和type的区别

在TypeScript中,interface和type都是用来定义类型的方式 (1)语法: interface 关键字用于定义接口,一般定义对象类型,可以描述对象的形状,即一个对象应该具有哪些属性和方法。interface可以声明对象应该具有的结构和属性。 type 关键字用于…

Java 中文官方教程 2022 版(三十二)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html 一个基本的打印程序 原文:docs.oracle.com/javase/tutorial/2d/printing/printable.html 本节解释了如何创建一个基本的打印程序,显示打印对话框,并将文本“Hello Worl…

导入芯片原厂SDK Mirror源码到gerrit

下载镜像代码 repo init --mirror --repo-url ssh://xx/repo.git -u ssh://xx/manifests.git -m manifest.xml repo sync 创建AOSP project 对All Project权限修改 创建repo 在刚才下载的codebase根目录执行如下命令: repo forall -c echo $REPO_PROJECT; ssh -p 29…

Linux使用docker安装RocketMQ并登录管理界面

Linux使用docker安装RocketMQ并登录管理界面 1、创建 /opt/rocketmq/docker-compose.yml和/opt/rocketmq/broker.conf两个配置文件 2、docker-compose.yml,并配置管理页面端口为8090 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_…

Ubuntu 22.04进行远程桌面连接

文心一言 Ubuntu 22.04进行远程桌面连接,无论是连接到Windows 10还是另一个Ubuntu 22.04,都可以通过不同的方式实现。以下是具体的步骤: 连接到Windows 10 在Windows 10上开启远程桌面功能:首先,需要在Windows 10上…

linux系统特殊符号

分号可以对命令分割,如下图,单独使用ls与pwd,与使用分号进行分割 井号可以将后面内容注释掉,以及作为root身份提示符 $可以取出变量的值,同时也是普通用户身份提示符 反斜杠可以将特殊字符转义为普通字符 花括号可以用…

(五)PostgreSQL的管理工具pgAdmin

PostgreSQL的管理工具pgAdmin pgAdmin 是一款流行的开源图形界面管理工具,用于 PostgreSQL 数据库的管理和开发。它提供了一个易于使用的界面,允许用户执行各种数据库任务,如创建和修改数据库对象(表、视图、索引等)、…

一文看懂标准版和Pro版的区别

在CRMEB的众多产品中,有这样两款产品经常被拿来比较,它们就是CRMEB的标准版和Pro版商城系统,今天,我们就来盘一下这两款系统之间究竟有哪些不同。 1、Pro版系统性能更卓越 CRMEB Pro版采用Tp6 SwooleRedis高性能框架开发&#…

组件与组件之间的传递-事件总线

两个组件之间的数据传递(属于非父子组件通讯) 当项目中只是两个组件的少量数据传递时使用事件总线这种方法会比较方便,但当遇到大量数据传递时推荐使用vuex 思路 组件与组件之间不能直接传递,这是候可以创建一个EventBus.js文件…

【火猫TV】Spirit.Collapse-不清楚队伍的问题出在哪里

1、近日Spirit战队三号位选手Collapse在精英联赛期间接受采访时表示:不清楚队伍目前的问题出在哪里,可能只是因为我们如今的状态和表现都不太好吧。转载:火猫TV资讯 【队伍目前的问题】 “我不是很清楚目前我们的问题出在哪里,可…

2024年,怎么开通一个属于自己的抖店?

我是王路飞。 抖店,依旧是普通人做抖音最好的渠道。 至于短视频直播带货,门槛较高,尤其是在当前的环境下,个人是很难竞争的过那些达人团队的。 不管是在门槛、操作、还是利润回报等方面,抖店都是一个不错的选择。 …

奎芯科技:智能时代的芯片上游企业如何突破?

半导体IP(Intellectual Property,知识产权),通常也称作IP核(IP core),指芯片设计中预先设计、验证好的功能模块,主要服务于芯片设计,因部分通用功能模块在芯片中被反复使…

五:函数基础:概念、基础语法、库函数与自定义函数

本章学习链接如下: 1.函数的概念 函数是执行特定任务的自包含代码块,它可以接受输入,处理输入,并产生输出。函数的使用提高了代码的重用性、模块性和可读性。C语言中的函数可以分为两大类:库函数和用户定义函数。 2.函…

为什么程序员老婆都很漂亮?网友:new出来的。。。

最近,我被一个问题吸引了,一网友提问:“为何程序员老婆都很漂亮?”哈哈,说到这个话题,我瞬间就不困了。 评论区的网友们也非常来劲儿。有位网友打趣说:“因为是自己用代码new出来的,…

换换换 码题集

难度:钻石 时间限制:1秒 占用内存:128M 输入 5 5 5 car van track dog cat 1 2 4 5 3 2 5 1 1 4 van car track dog cat 输出 5 3 2 4 1 原始思路&#xff1a;for循环&#xff0c;但会运行超时 #include<bits/stdc.h> using namespace std; int main(){int n,m,t;cin…