Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

MachineLP/OCR_Keras

Repository files navigation

代码目录

|---- config.py # 工程参数配置
|---- ocr_lib # 模型、数据生成
| |---- crnn.py # 选用不同模型
| |---- vgg16.py 
| |---- vgg19.py 
| |---- Xception.py 
| |---- densenet.py
| |---- data_generator.py
| |---- data_load.py
| |---- gen_train_val_data.py
| |---- random_gen.py
| |---- fonts # 字体
|---- train_net_online.py 
|---- test_net_online.py 
|---- requirements.txt 
  • 代码是基于keras实现的ocr.

主要内容包含:

  1. 相关介绍
  2. 代码使用
  3. 联系

相关介绍

  • 如何进行ocr? 主要方式有:

(1) 文本检测:yolo v3、 ctpn、psenet等,主要是基于检测、分割的方案。

(2) 文本识别:cnn+ctc、crnn+ctc等。

代码使用

  1. OCR模型训练 (训练时间24小时以上,config.py的参数保持默认、或者修改)
$ python train_net_online.py 

2.OCR模型测试

$ python test_net_online.py
  1. OCR模型优化

(1) 选用不同的模型cnn、 crnn等。

(2) 文字生成器选用text_renderer

(3) 还可可参考:PANcrnn.pytorchchineseocrchinese_ocrawesome-ocrPSENettext-detection-ctpnkeras_ocrkeras_PSENetocr_chinese

(4)单字的检测和识别可以参考:CPS-OCR-Engine

测试结果: image

gt>>>>>>> 戒敞古逊罪化综波早洼
pred>>>>> 戒敞古逊罪化综波早洼
gt>>>>>>> 枫矢浙o膝犁苹嫉轨徊
pred>>>>> 枫矢浙o膝犁苹嫉轨徊
gt>>>>>>> 壤驾橘荤僻境追闸择葱
pred>>>>> 壤驾橘荤僻境追闸择葱
gt>>>>>>> 光8旧亏入书丁寸乎}达正
pred>>>>> 光8旧亏入书丁寸乎}达正
gt>>>>>>> 年降姊雕吝奇癣盹印E彪帅
pred>>>>> 年降姊雕吝奇癣盹印E彪
gt>>>>>>> P鞍笼淆喝文姊籽举陨
pred>>>>> P鞍笼淆喝文姊籽举陨
gt>>>>>>> 惩沙掠巧博苗班扣答刽豌樱
pred>>>>> 惩沙掠巧博苗班扣答刽豌樱
gt>>>>>>> 突喜针垄麸汹亏废妒件扯燃
pred>>>>> 突喜针垄麸汹亏废妒件扯燃
gt>>>>>>> 指限蝌艺依铺蔓崩走胡
pred>>>>> 指限蝌艺依铺蔓崩走胡
gt>>>>>>> 支袱葬栖皮这庞法毫穴赫颇
pred>>>>> 支袱葬栖皮这庞法毫穴赫颇
gt>>>>>>> 敞换啊兽倔论涉究搓叔歧沫
pred>>>>> 敞换啊兽倔论涉究搓叔歧沫
gt>>>>>>> 去斥巨化勾]加g风矛召支
pred>>>>> 去斥巨化勾]加g风矛召支
gt>>>>>>> 宁S市扬当a边成计订
pred>>>>> 宁S市扬当a边成计订
gt>>>>>>> 古闪瓦丙迈见礼4旧女凤肉
pred>>>>> 古闪瓦丙迈见礼4旧女凤肉
gt>>>>>>> 捶儿丢覆这抬蔗抢沫肾
pred>>>>> 捶儿丢覆这抬蔗抢沫肾

联系

如何有问题或者建议请联系wechat: lp9628 (需要生成接口、.pb模型可联系)

为了更快的看到效果,只给了两个颜色:random_gen.py

随机生成背景颜色

def randon_gen_bg_color():
 # 图片背景
 '''
 R = random.randrange(0,255,15)
 G = random.randrange(0,255,15)
 B = random.randrange(0,255,15)
 img_color_list = [ (R, G, B) ]'''
 img_color_list = [ (0,0,0), (255,255,255)] #, (255,0,0), (0,255,0), (0,0,255), (0,255,255), (255,0,255), (255,255,0), (128,128,128), (128,0,0), (0,128,0), (0,0,128), (0,128,128), (128,0,128), (128,128,0) ]
 img_bg_color = random.randint( 0, len(img_color_list)-1 )
 return img_color_list[img_bg_color]
# 随机生成文本颜色
def random_gen_text_color():
 # 文字颜色
 '''
 R = random.randrange(0,255,15)
 G = random.randrange(0,255,15)
 B = random.randrange(0,255,15)
 text_color_list = [ (R, G, B) ]'''
 text_color_list = [ (0,0,0), (255,255,255)] #, (255,0,0), (0,255,0), (0,0,255), (0,255,255), (255,0,255), (255,255,0), (128,128,128), (128,0,0), (0,128,0), (0,0,128), (0,128,128), (128,0,128), (128,128,0) ]
 text_color = random.randint( 0, len(text_color_list)-1 )
 return text_color_list[text_color]
# 在样本生成的时候没有选用图片作为背景: data_generator.py
flag = np.random.choice([False]) # True
# 随机的调整宽高, 以最大长度初始化
img_size_width = 50 * n_len + 40 + randon_img_width

About

OCR;文本检测、文本识别(cnn+ctc、crnn+ctc)。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /