https://github.com/and-q/chinese-charactor-recognition

本项目是一个基于深度学习的中文字符识别系统,能够识别单个中文字符以及连续的中文文本。项目使用了多种卷积神经网络模型,如ResNet、VGG、LeNet等,通过对大量中文手写字符样本的学习,实现了对中文字符的高精度识别。

https://github.com/and-q/chinese-charactor-recognition

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.6%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

本项目是一个基于深度学习的中文字符识别系统,能够识别单个中文字符以及连续的中文文本。项目使用了多种卷积神经网络模型,如ResNet、VGG、LeNet等,通过对大量中文手写字符样本的学习,实现了对中文字符的高精度识别。

Basic Info
  • Host: GitHub
  • Owner: AND-Q
  • Language: Python
  • Default Branch: main
  • Size: 48.8 MB
Statistics
  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme

README.md

手写汉字识别

项目简介

本项目是一个基于深度学习的中文字符识别系统,能够识别单个中文字符以及连续的中文文本。项目使用了多种卷积神经网络模型,如ResNet、VGG、LeNet等,通过对大量中文手写字符样本的学习,实现了对中文字符的高精度识别。

功能特点

  • 单字符识别:能够准确识别单个中文字符
  • 多字符识别:支持对连续中文文本的分割与识别
  • 多模型支持:实现了多种深度学习模型,包括ResNet、ResNet18、ResNet34、VGG、LeNet和CNN
  • 数据增强:通过多种图像处理技术进行数据增强,提高模型鲁棒性
  • 可视化分析:提供训练过程的损失函数和准确率可视化

项目结构

Chinese_charactor_recognition/ ├── model.py # 模型定义文件,包含多种CNN模型结构 ├── train.py # 模型训练代码 ├── test.py # 模型测试代码 ├── recognize.py # 字符识别实现 ├── mul_char.py # 多字符分割处理 ├── MyDataset.py # 数据集加载与预处理 ├── config.py # 配置参数 ├── dict.py # 字符字典处理 ├── plt.py # 绘图工具 ├── vgg_block.py # VGG模型块定义 ├── Residual_block.py # ResNet残差块定义 ├── look.py # 数据可视化工具 ├── data/ # 数据集目录 │ ├── HWDB1.1trn_gnt # 训练数据 │ ├── HWDB1.1tst_gnt # 测试数据 │ └── char_dict # 字符映射字典 ├── result/ # 结果保存目录 │ ├── param/ # 模型参数 │ ├── fig/ # 训练过程图表 │ └── output_chars/ # 分割后的字符图像 └── sentence_img/ # 待识别的句子图像

技术实现

数据集

本项目使用CASIA-HWDB(中国科学院手写数据库)作为训练和测试数据集。数据集包含大量中文手写字符样本,以.gnt格式存储。项目中的MyDataset.py负责解析.gnt文件,提取字符图像和对应标签。

官方数据集下载地址:https://www.nlpr.ia.ac.cn/databases/handwriting/Download.html

我使用的数据集下载:https://github.com/AND-Q/HWDB1.1-

模型架构

项目实现了多种卷积神经网络模型:

  • ResNet:使用残差连接的深层卷积网络,有效解决深层网络的梯度消失问题
  • VGG:使用小卷积核堆叠的经典卷积网络
  • LeNet:早期经典的卷积神经网络,结构简单但有效
  • CNN:基础卷积神经网络
  • ResNet18/34:更深层次的残差网络变体

数据增强

为提高模型泛化能力,项目实现了多种数据增强技术:

  • 对比度和亮度调整
  • 椒盐噪声和高斯噪声
  • 高斯模糊和锐化
  • 随机旋转
  • 随机翻转和缩放

多字符识别

多字符识别通过以下步骤实现:

  1. 图像预处理(灰度化、二值化、反色)
  2. 中值滤波去噪
  3. 轮廓检测提取字符区域
  4. 合并相近轮廓,避免单个字符被过度分割
  5. 对分割出的单个字符进行识别
  6. 合并识别结果

使用方法

环境配置

```bash

克隆仓库

git clone https://github.com/your-username/Chinesecharactorrecognition.git cd Chinesecharactorrecognition

安装依赖

pip install -r requirements.txt ```

训练模型

bash python train.py --model ResNet --epochs 50 --batch_size 512

可选参数: - --model:选择模型类型(ResNet, VGG, LeNet, CNN, ResNet18, ResNet34) - --epochs:训练轮数 - --batch_size:批次大小 - --lr:学习率

测试模型

bash python test.py --model ResNet

识别单个字符

bash python recognize.py

识别多字符文本

```bash

先分割字符

python mul_char.py

然后识别分割后的字符

python recognize.py ```

实验结果

在CASIA-HWDB数据集上,识别准确率80%以上。

未来改进

  • 实现基于注意力机制的端到端多字符识别
  • 添加对手写体和印刷体的混合识别支持
  • 优化模型结构,减小模型大小,提高推理速度
  • 增加对罕见字和生僻字的识别支持
  • 实现基于Web的在线识别服务

参考资料

  • CASIA-HWDB数据集:http://www.nlpr.ia.ac.cn/databases/handwriting/Home.html
  • ResNet论文:He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition.
  • VGG论文:Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition.

许可证

MIT License

Owner

  • Name: Zhengyang
  • Login: AND-Q
  • Kind: user

GitHub Events

Total
  • Watch event: 2
  • Push event: 1
  • Fork event: 1
  • Create event: 2
Last Year
  • Watch event: 2
  • Push event: 1
  • Fork event: 1
  • Create event: 2

Dependencies

requirements.txt pypi
  • d2l >=0.17.0
  • matplotlib >=3.3.0
  • numpy >=1.19.0
  • opencv-python >=4.5.0
  • pillow >=8.0.0
  • scikit-learn >=0.24.0
  • torch >=1.8.0
  • torchvision >=0.9.0