NLP 校园活动信息智能分析处理系统,主要功能包括上传身份证图片、提取姓名和身份证号、活动类型分类和活动信息发布。
paddleocr: 高精度中文 OCR 识别引擎transformers: 用于活动类型分类的 NLP 模型opencv-python: 图像处理Flask: Web 框架SQLAlchemy: ORM# 加载环境变量
source /etc/profile
# 确认数据库和 Redis 已启动
# MySQL: localhost:3306 (用户: lyq, 密码: 123456)
# Redis: localhost:6379
pip install -r requirements.txt
python init_db.py
python app.py
服务将在 http://localhost:5000 启动。
本项目使用 PaddleOCR 进行身份证识别,相比 Tesseract 有以下优势:
from utils.ocr_utils import extract_id_card_info
# 识别身份证
id_info = extract_id_card_info('path/to/id_card.jpg')
print(f"姓名: {id_info['name']}")
print(f"身份证号: {id_info['id_number']}")
# 测试身份证识别
python test_id_card_ocr.py test_images/id_card.jpg
# 测试图像预处理
python utils/image_preprocess.py test_images/id_card.jpg
详细的 OCR 配置说明请参考:docs/PADDLEOCR_SETUP.md
POST /register
Content-Type: multipart/form-data
参数:
- username: 用户名
- email: 邮箱
- image: 身份证图片文件
返回:
{
"message": "用户注册成功",
"user": {
"id": 1,
"username": "zhangsan",
"email": "zhangsan@example.com",
"name": "张三",
"id_number": "110101199001011234"
}
}
POST /classify
Content-Type: application/json
{
"description": "人工智能与机器学习讲座"
}
返回:
{
"activity_type": "学术讲座"
}
campus_activity_system/
├── app.py # 主应用入口
├── routes.py # 路由定义
├── models.py # 数据模型
├── utils/
│ ├── ocr_utils.py # OCR 识别工具(PaddleOCR)
│ ├── nlp_utils.py # NLP 分类工具
│ └── image_preprocess.py # 图像预处理工具
├── docs/
│ └── PADDLEOCR_SETUP.md # PaddleOCR 配置文档
├── test_id_card_ocr.py # OCR 测试脚本
├── requirements.txt # Python 依赖
├── CLAUDE.md # 项目规范
└── README.md # 本文档
~/.cache/huggingface/hub/models--dslim--bert-base-NER
首次运行会自动下载模型文件(约 50MB)
# MySQL 配置
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://lyq:123456@localhost:3306/campus_activity'
# Redis 配置
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
A: 请确保:
可以使用图像预处理工具提高识别率:
python utils/image_preprocess.py your_id_card.jpg
A:
pip uninstall paddlepaddle
pip install paddlepaddle-gpu
然后在 utils/ocr_utils.py 中修改:
ocr = PaddleOCR(use_angle_cls=True, lang='ch', use_gpu=True)
A: 首次运行会自动下载模型,如下载慢可使用国内镜像或手动下载。
详细的开发规范和技术选型请参考:CLAUDE.md