Spaces:
Sleeping
Sleeping
File size: 5,954 Bytes
c30406d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
图片处理功能测试脚本
"""
import streamlit as st
from PIL import Image
import os
from image_processor import image_processor
def test_image_processing():
"""测试图片处理功能"""
st.title("🖼️ 图片处理功能测试")
st.markdown("---")
# 上传测试图片
uploaded_file = st.file_uploader(
"上传测试图片",
type=['jpg', 'jpeg', 'png', 'bmp', 'tiff', 'webp'],
help="支持多种图片格式,系统会自动检测图片类型并优化处理"
)
if uploaded_file is not None:
# 显示原图
st.subheader("📸 原图")
image = Image.open(uploaded_file)
st.image(image, caption=f"原图: {uploaded_file.name}", use_column_width=True)
# 图片信息
col1, col2, col3 = st.columns(3)
with col1:
st.metric("图片尺寸", f"{image.size[0]} × {image.size[1]}")
with col2:
st.metric("图片模式", image.mode)
with col3:
st.metric("文件大小", f"{uploaded_file.size / 1024:.1f} KB")
st.markdown("---")
# 选择处理模式
st.subheader("🔧 处理选项")
enhancement_type = st.selectbox(
"选择增强模式",
["auto", "text", "table", "formula", "diagram"],
format_func=lambda x: {
"auto": "🤖 自动检测",
"text": "📝 文本优化",
"table": "📋 表格优化",
"formula": "🧮 公式优化",
"diagram": "📊 图表优化"
}[x]
)
if st.button("🚀 开始处理"):
with st.spinner("正在处理图片..."):
try:
# 分析图片内容
analysis_result = image_processor.analyze_image_content(image)
# 预处理图片
processed_image = image_processor.preprocess_image(image, enhancement_type)
# 显示结果
st.markdown("---")
st.subheader("📊 分析结果")
# 分析指标
col1, col2, col3, col4 = st.columns(4)
with col1:
st.metric("检测类型", analysis_result['image_type'])
with col2:
st.metric("置信度", f"{analysis_result['confidence']:.2f}")
with col3:
st.metric("文字长度", len(analysis_result['text']))
with col4:
st.metric("表格数量", len(analysis_result['tables']))
# 显示处理后的图片
st.subheader("🖼️ 处理后图片")
col1, col2 = st.columns(2)
with col1:
st.image(image, caption="原图", use_column_width=True)
with col2:
st.image(processed_image, caption=f"处理后 ({enhancement_type})", use_column_width=True)
# 显示提取的文字
if analysis_result['text']:
st.subheader("📝 提取的文字")
st.text_area("识别结果", analysis_result['text'], height=200)
# 显示提取的表格
if analysis_result['tables']:
st.subheader("📋 提取的表格")
for i, table in enumerate(analysis_result['tables']):
st.write(f"表格 {i+1}:")
st.dataframe(table, use_container_width=True)
# 显示提取的公式
if analysis_result['formulas']:
st.subheader("🧮 提取的公式")
for i, formula in enumerate(analysis_result['formulas']):
st.code(formula, language='text')
st.success("✅ 图片处理完成!")
except Exception as e:
st.error(f"❌ 处理失败: {str(e)}")
# 功能说明
st.markdown("---")
st.subheader("📖 功能说明")
with st.expander("🔍 支持的图片类型"):
st.markdown("""
- **文本图片**: 包含大量文字的图片,如文档截图、笔记等
- **表格图片**: 包含表格结构的图片,如数据表、统计表等
- **公式图片**: 包含数学公式的图片,如数学题、公式推导等
- **图表图片**: 包含图表的图片,如柱状图、折线图、流程图等
""")
with st.expander("⚙️ 处理技术"):
st.markdown("""
- **图像增强**: 自适应直方图均衡化、降噪、锐化
- **边缘检测**: Canny边缘检测、形态学操作
- **OCR识别**: Tesseract OCR引擎,支持中英文
- **智能分类**: 基于图像特征的自动类型检测
- **表格识别**: 基于结构分析的表格提取
- **公式识别**: 数学符号和表达式的识别
""")
with st.expander("🎯 应用场景"):
st.markdown("""
- **学习资料**: 教材截图、讲义图片、笔记照片
- **考试题目**: 试卷图片、题目截图、答案图片
- **数据表格**: 统计表、数据表、对比表
- **数学公式**: 数学题、公式推导、计算过程
- **图表分析**: 流程图、思维导图、组织结构图
""")
if __name__ == "__main__":
test_image_processing() |