如何用 TensorFlow 实现 OCR

OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题。


近年来,随着深度学习技术的进步,对 OCR 正确率的提升起到积极促进的作用。一些成熟的产品级别 OCR 系统能同时识别汉字、字母、数字、特殊字符并进行版面恢复,可以应用于身份证实名认证中的人证识别、名片识别、印刷文本识别等具体场景。


下面我们看如何利用 TensorFlow 实现英文字符识别,读者需要在机器上安装 TensorFlow 和 Keras,具体安装步骤可以参考上一篇文章《利用 TensorFlow 高级 API Keras 实现 MLP,CNN,LSTM》。OCR 例程位于 keras/examples/image_ocr.py。


为了运行该例程,需要安装以下两个包:


# pip install cairocffi

# pip install editdistance


根据运行时报错情况,可能还需要安装以下包:


# pip install matplotlib

# pip install scipy

# pip install numpy

# pip install h5py


这个例子使用卷积网络 + 递归网络 + CTC 对数损失函数来实现生成文本图像上的 OCR 功能。目前未验证是否真正学到了文本的通用形状,还是只能识别训练集里面的字体。


起初,先识别 4 字母的单词。前 12 个 epoch,难度递增。

使用 TextImageGenerator 类作为训练数据、测试数据生成器。该类也是 Keras 回调类。

经过 20 个 epoch,将更长的序列作为输入,重新构建能处理宽图像的模型,重建单词列表,包括两个由空格分离的单词。





1. 准备数据:

原来的代码中数据下载部分有 bug,需要做如下修改。

找到这两行:

    fdir = os.path.dirname(get_file('wordlists.tgz',

                                    origin='http://www.isosemi.com/datasets/wordlists.tgz', untar=True))


删掉,改为:


    fdir = '/tmp/'


从网盘(关注公众号,后台回复“20170220”获得下载链接)下载 wordlists.tgz,解压到 /tmp/,包括这两个文件:

wordlist_bi_clean.txt  wordlist_mono_clean.txt



2. 运行训练:

# python image_ocr.py


训练过程如下:



中间结果输出目录位于 examples/image_ocr/


epoch 0:

epoch 10:

epoch 20:

epoch 24:

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值