更新代码,添加ocr和whisper
This commit is contained in:
parent
8c10da4168
commit
de5563371e
@ -1,137 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
简化OCR测试脚本
|
|
||||||
"""
|
|
||||||
|
|
||||||
import cv2
|
|
||||||
import json
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
def test_paddleocr():
|
|
||||||
"""测试PaddleOCR基本功能"""
|
|
||||||
print("🔧 测试PaddleOCR...")
|
|
||||||
|
|
||||||
try:
|
|
||||||
from paddleocr import PaddleOCR
|
|
||||||
|
|
||||||
# 初始化OCR
|
|
||||||
ocr = PaddleOCR(
|
|
||||||
use_textline_orientation=True,
|
|
||||||
lang='ch'
|
|
||||||
)
|
|
||||||
print("✅ PaddleOCR初始化成功")
|
|
||||||
|
|
||||||
# 测试视频文件
|
|
||||||
video_path = "/root/autodl-tmp/hot_video_analyse/video2audio/sample_demo_6.mp4"
|
|
||||||
|
|
||||||
# 读取一帧进行测试
|
|
||||||
cap = cv2.VideoCapture(video_path)
|
|
||||||
ret, frame = cap.read()
|
|
||||||
cap.release()
|
|
||||||
|
|
||||||
if not ret:
|
|
||||||
print("❌ 无法读取视频帧")
|
|
||||||
return False
|
|
||||||
|
|
||||||
print("📸 成功读取视频帧")
|
|
||||||
|
|
||||||
# 进行OCR识别 - 使用predict方法
|
|
||||||
try:
|
|
||||||
result = ocr.predict(frame)
|
|
||||||
except:
|
|
||||||
# 如果predict不工作,尝试ocr方法
|
|
||||||
result = ocr.ocr(frame)
|
|
||||||
|
|
||||||
print(f"🔍 OCR结果类型: {type(result)}")
|
|
||||||
|
|
||||||
# 处理结果
|
|
||||||
if result:
|
|
||||||
if isinstance(result, list) and len(result) > 0:
|
|
||||||
detections = result[0] if isinstance(result[0], list) else result
|
|
||||||
print(f"🔍 OCR结果: {len(detections)} 个检测")
|
|
||||||
|
|
||||||
for i, detection in enumerate(detections[:3]): # 只显示前3个
|
|
||||||
if detection and len(detection) >= 2:
|
|
||||||
try:
|
|
||||||
bbox, text_info = detection
|
|
||||||
if isinstance(text_info, tuple) and len(text_info) >= 2:
|
|
||||||
text, confidence = text_info
|
|
||||||
print(f" {i+1}. 文本: '{text}' 置信度: {confidence:.3f}")
|
|
||||||
else:
|
|
||||||
print(f" {i+1}. 检测到文本但格式异常: {text_info}")
|
|
||||||
except Exception as e:
|
|
||||||
print(f" {i+1}. 处理检测结果时出错: {e}")
|
|
||||||
else:
|
|
||||||
print("🔍 OCR结果为空或格式异常")
|
|
||||||
else:
|
|
||||||
print("🔍 OCR结果为None")
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print(f"❌ PaddleOCR测试失败: {e}")
|
|
||||||
import traceback
|
|
||||||
print(f"详细错误: {traceback.format_exc()}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
def test_easyocr():
|
|
||||||
"""测试EasyOCR基本功能"""
|
|
||||||
print("\n🔧 测试EasyOCR...")
|
|
||||||
|
|
||||||
try:
|
|
||||||
import easyocr
|
|
||||||
|
|
||||||
# 初始化OCR
|
|
||||||
reader = easyocr.Reader(['ch_sim', 'en'])
|
|
||||||
print("✅ EasyOCR初始化成功")
|
|
||||||
|
|
||||||
# 测试视频文件
|
|
||||||
video_path = "/root/autodl-tmp/hot_video_analyse/video2audio/sample_demo_6.mp4"
|
|
||||||
|
|
||||||
# 读取一帧进行测试
|
|
||||||
cap = cv2.VideoCapture(video_path)
|
|
||||||
ret, frame = cap.read()
|
|
||||||
cap.release()
|
|
||||||
|
|
||||||
if not ret:
|
|
||||||
print("❌ 无法读取视频帧")
|
|
||||||
return
|
|
||||||
|
|
||||||
print("📸 成功读取视频帧")
|
|
||||||
|
|
||||||
# 进行OCR识别
|
|
||||||
result = reader.readtext(frame)
|
|
||||||
|
|
||||||
print(f"🔍 OCR结果: {len(result)} 个检测")
|
|
||||||
|
|
||||||
for i, detection in enumerate(result[:3]): # 只显示前3个
|
|
||||||
bbox, text, confidence = detection
|
|
||||||
print(f" {i+1}. 文本: '{text}' 置信度: {confidence:.3f}")
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print(f"❌ EasyOCR测试失败: {e}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
def main():
|
|
||||||
"""主函数"""
|
|
||||||
print("🧪 简化OCR功能测试")
|
|
||||||
print("=" * 40)
|
|
||||||
|
|
||||||
paddle_ok = test_paddleocr()
|
|
||||||
easy_ok = test_easyocr()
|
|
||||||
|
|
||||||
print("\n" + "=" * 40)
|
|
||||||
print("📊 测试结果:")
|
|
||||||
print(f" PaddleOCR: {'✅ 成功' if paddle_ok else '❌ 失败'}")
|
|
||||||
print(f" EasyOCR: {'✅ 成功' if easy_ok else '❌ 失败'}")
|
|
||||||
|
|
||||||
if paddle_ok or easy_ok:
|
|
||||||
print("\n🎉 至少有一个OCR引擎工作正常,可以继续使用!")
|
|
||||||
else:
|
|
||||||
print("\n⚠️ 所有OCR引擎都有问题,请检查安装")
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
Loading…
x
Reference in New Issue
Block a user