真实复杂场景手写英文体识别

该博客主要探讨了在真实复杂场景下对手写英文体的光学字符识别(OCR)技术,包括三个核心文件:ocr_generate.py用于生成OCR数据,ocr_forward.py实现前向识别流程,orc_backward.py则涉及反向优化过程,而ocr_text.py专注于OCR后的文字处理。
摘要由CSDN通过智能技术生成

ocr_generate.py

import numpy as np
import os
import glob
from PIL import Image

# ord函数:将字符转化成数字
# chr函数:将数字转化成字符
# charactersNo字典:a~A,A~Z,0~10,".,?\'-:;!/\"<>&(+"的key值分别对应0-25,,2-51,52-61,62....
# characters列表:储存的是charactersNo字典的key
# 建立charactersNo字典的意思是:为了将之后手写体对应的txt文件中的句子转换成数字编码,便于存储和运算求距离
charactersNo = {}
characters = []
length = []

for i in range(26):
    charactersNo[chr(ord('a') + i)] = i
    characters.append(chr(ord('a') + i))  # 在列表末尾添加新对象
for i in range(26):
    charactersNo[chr(ord('A') + i)] = i + 26
    characters.append(chr(ord('A') + i))
for i in range(10):
    charactersNo[chr(ord('0') + i)] = i + 52
    characters.append(chr(ord('0') + i))
punctuations = ".,?\'-:;!/\"<>&()+"
for p in punctuations:
    charactersNo[p] = len(charactersNo)  # 字典中元素个数
    characters.append(p)


# 读取了train_img和train_txt文件夹下的所有文件的读取路径
# 下面代码的作用是:
# Img:列表结构 存储的是手写的英文图片
# Y:数组结构 存储的是图片对应txt文件中的句子,只不过存储的是字符转码后的数字
# length:数组结构 存储的是图片对应的txt文件中句子含有字符的数量
def get_data():
    imgfiles = glob.glob(os.path.join("train_img", "*"))  # 用法os.path.join(path1, path2, ...)返回:多个路径拼接组合
    imgfiles.sort()  #
    txtfiles = glob.glob(
        os.path.join("train_txt", "*"))  # path = os.path.join(data_dir,'*.txt') , files = glob.glob(path)
    txtfiles.sort()
    Imgs = []
    Y = []
    length = []
    for j in range(len(imgfiles)):
        fin = open(txtfiles[i])
        line = fin.readlines()  # readlines():读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,
        line = line[0]
        fin.close()
        y = np.asarray([0] * (len(line)))  # 当输入是列表的时候,将输入转为矩阵格式,更改列表的值并不会影响转化为矩阵的值。
        succ = True  # 当输入为数组
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值