原文链接: tf 单个文字识别 data 数据输入

上一篇: tf data 使用生成器作为数据输入

下一篇: tf 文字识别 多个文字 data 数据流

识别结果相当好

show 9800 [0.96875, 0.16407159]
time 15.302184343338013
(32,) (32,)
['知' '粪' '源' '秆' '吐' '济' '佛' '溢' '埃' '凶' '破' '砸' '功' '佰' '秀' '爬' '惮' '尝''辅' '掣' '潘' '匀' '黍' '旬' '统' '狠' '涛' '鄂' '橙' '缅' '庶' '究']
['知' '粪' '源' '杆' '吐' '济' '佛' '溢' '埃' '凶' '破' '砸' '功' '佰' '秀' '爬' '惮' '尝''辅' '掣' '潘' '匀' '黍' '旬' '统' '狠' '涛' '鄂' '橙' '堰' '庶' '究']

必须加BN, 不然无法收敛!!!!!!!!!!!!!

使用sparse_softmax_cross_entropy_with_logits 作为损失函数时, 会自动进行softmax处理, 并且label比logits少一个维度

需要显示声明utf8, 不然有些汉字会报编码错误

为了能够绘制中文字体 , 需要中文字体库

注意字体的大小和验证码图片大小要合适

# encoding:utf-8
import tensorflow as tf
import numpy as np
from tensorflow.contrib import slim
from captcha.image import ImageCaptcha
from PIL import Image
import matplotlib.pyplot as plt
import timeTRAIN_STEP = 1000000
SHOW_STEP = 100
SAVE_STEP = 200
LR = 0.001
SAVE_PB_PATH = './pb'
TEXT = np.array(list("贿枉呻音荒兼畦稼瘤盔拱巷毡围马吱缀农增宿吴彪鄂竿妒厘恼谴执谋言哆靡痔左捐帕局秉苏恩迸填遮混涕鲜诞磕琵瞧游峙甭嘎北形块自览忘蚜打供吮趁呕肥亚酱梗葛口吻套凭座夕抑匆槛贯拒恃斤合毯忙君酉幸出初支院溉俏艳嘲鸣识耿止余破谁翼咯病驳累穷衰肖框抡沪痊怪源翌竹昔痢瘩埋窿拎母晕迂阁魂瞻赵别国劳薄困龙粤侯沏荐畴招玻金半剪瓣海狱怨走码甫滁牺脖具拔毁逊品螟狞俺茅浴弃槐治倘棵烷砷衅扎狄嚎龋哀克没舱交缠狼蔚叮芳绦惟德矛仍买跌嘿坛暇椎汾瓦噪垢屋雾巫悠今瓮拢僻甘患彩祈感乌越佯灯票撒盅愿巩恐协虎祝胜参媳疆篆行醛碘典匪倪察查茫偶哑铂惯砌婿过贤衍淤赃赠剖靳舞闽话撑经缆卵娶修穴司蓑如玲札酵厩狙城耀终蔑包译潮署漳杖诵谷毫虱柿箔摘蛛烫笨瞥亮橡懊剐霓烬霖锄贾笺里挺耶鼻军佃新斑诊噬禹篓促噎涛檄吐逮侄弗陵羹渣纤萍绑款谓计沥久愈倔怎雏翟芦银揣寿艺瑚光馏废贪磷挖问兹孵氓陶鸳锑持臻床土肇铆垒努钳静泻磊羽矿孺咒榔蓖寇责店豪塘室猖捌归怠鳞邀由远郎蛀社殃扇画枷陷输页肄锯蒲娠夏略焕邹讹侨疫蹿错语胸砾领酶跨滥驱凰蜂坤江宾茎轴捎勺凑阮损力悉帽癌坚俗心掩吾伞痞卤陌琴兄陇妓眨名锁珠咏纵眶另敬昭界校朝券船痴赐岔怖肛兰令挪范邮惦怜黔驶麦算绥响活筷犁罐沟崩雁洛隅入耗惑躇稻簇及杉威踏尹针财欺机碧耕渐隧费蛔厕肺契盖骂挤牛告哪呜唬萌忆钥铀棉爪舶旷肮迈猿尼说佑赡秒方虫跪核补捆逞楚球梳型彦峰禄味学联鳃捂犬莆仑轰趣既涵儒偿躬旭部来迪傲鱼拆褒洪氖诣殊烈镣兴垛饺柠劝停傅掂貌毕枪缉故歹茂刃滇扣少裸秤刹堪术青凡雕态坷汽缎坝栋笆净煮手钨陛怒贞妇控蘸东氰按山暴逼卞慎苑煎帧望奥凛铬颓疽杂卖湍称佩封曰募妆韦掖雅揭冶叛位攫著隘咀厌弥隔汀蔗狰鞋步鸿裴狂往纪蝶额赫滋播赞人僚狐隙赢恳逃萎垦趾虏挫善卢髓突腰俞胳毙召涝琶嫌更各搬琐投托项营找铸缘跑叠俐婚挚祁浚销而窘沈南居紫柬拧屉排摧挨阜腾缮荔艰冒趟但姨误休筝撂委内嫁诡铺餐婉煽怂痰亦夷要惩童却衙茄溢媚愚状豁低搓夜淮舔荡曲移谢刊或浸作又尊痈附啼捶衡隋珊籽配熊桑贡恢撵肯差维柱哇廷恍薯殿桨危滩蠕殷镊林千肾美皋拄年沽骸雌鲤铁敌帚撬奢呼郭钟攀邢雄漂屯和锋棠织均刑烃钾看肠歇拙充弹龄冷暮甄掳段鸭实舀溃椒讫焦缨婴竟划玫冀丛寸篇褐栅膀航褥献留娇成拖媒酋驼酸沫辩赊烙脾什沾密炎每索壮蹦宪积甥辞翻祷傍敲宽稚韵溅熏匙栈慕吸剿肋者淆嗜澄电蓝摄尤蜀0胶慧政判浊坊途孽坟焙庐赶2害派垄验矫诲祭百搏逢迄圈卫吨蚀寺庭题牙嗣悍渠温簧凉练操靴梨沙萤珐搞抬戊短古湖调疙捷菌蜜潍崭瘴哭拯俭凿值詹佛辊理水恒专堵塞便声桅昆环蛇袋喷显华触有炒缓簿犊龟霄瀑芬纠岸通墙遍贵谱琉叫扑健顽涣裹边迎助丁欠掠购概批彝掌俘钠某浙很檬牢瑞章罕搭压疑散辨照谜代胡柑懦卷翁骋耪仇绷荷麓疮气台峪尚挽激老喧固绝窒祟汰需全食缝搁么失阂窑听葵汐奎硫阎铡瞅疵检忌邓帐棒吵盗逛传狈田叔恕婪奴廓侣煤纱聋旅跳庆草腿进访火寂六儿镶颤洗像桔径箱粥道搅饱厦虹上席汗即垫坯觉适寻酪镇雹袭菏遁剥臀堰曼八生浮舰首午戳棕尉碰考呀彤宝帝豆涟酞快莉癣拿池辰脉窍笑赴卸暂梯皿硅鞍得芒闪伴沧哩驯脆利跺官袜犀乾系驻精哎蔡裕较弊冤揪猜捞氯皇莽勉墅税肤总况类溯栗徘撞比吧将眷哦蛆爬辟户神并豫孜恶贬峻楼苞洼茶肌仰插泽你唁晃剩强钓俱洽侩邻鬃瞒且渊晨香咆夫癸账倚抱砒份抒外撕蒸己苦疯甚渗谎互倦房审售梦擦闲难赎孝园痹猪腹摈馒斯穆悸灾帘底铱早泞坏佰瞄当素萄展注伟灰默吉摊啦逻吹以坑鸯贩杯饮泰杭逐蹲境炼货凝沤奈洲涌哨逗裁甜敖柯捻脐抢屹日曾锥准姑漏仆习攒肩庚澎踢履动筐勘苯振贫桶物谰节墨莱潜九裙茸熔菇摩淑肆藤毋绳唆逸狠谚真诌乎翅咎壬战脱庇惰兵灵巍飞茧宁朋乍念接扶频柴句齿衷伺猾测钙罚反苗返定扯乙愉材尺晦鉴羞垣槽保阶稽窗饼睦分伎坐懈镜鸽滦颈随湿弟茨加勾喉钱糠蚁鲍蹈誓斡樊稠血捏可揉讯讼朵坪匝邪澈魄抓镭股衫存卉宵焰椰刺遗员制救仙签限栖饭际呆胞培歧纂舅蛋岂蜘荧预帛莫歌纹丰侮卓右漫谈楔斌蛾延主毖冬僵收霜推掐蝗炕洱顺闷震硼讶享取戍铣任赋单兢周碟月祖拌弱磋搔叨絮泼拳藩泣唯瓤诸浩喊锭速蛙蔷擂酬杠信丧秦被蔬疤融哺造鸵功溶讣霸仕御拼宜网体钒碱臃韭窃睫泡湾耸陨膛字卑京羔揩烁坦假吞偷丝孔隆文萝愧钎粱悔藕逆班则脑阵喇镑刮唐闻佐惜貉迢尸挂鲸一淬意原拷哉滤猩氧宠籍登斧兽艾二蝴眼钻篮咳韶避屿爆搜迫绅洋弯藐柒姻恭汤寞骏丈继纲掣菠铃瞳怔晒冲翠燥董辽奋泄郴旗鹿胎滞汹据遵幂梢馅最铲秩甸届柔乘泪满渝沁湃馋橇天仲膏旺姬谦吓钵绸弓福瘁近绘裔葫刽绢哟达氛殴戏爱趋峭汕跋舍尖明件抿区所秆巧辅趴蠢们娘衣箭足葱付亏表傀晶菱镍搀石闭贺奸驭产畜邵恿沮波悯挠菲洒白辉瓶蹋烹勒戈永薛靛干褂亿下锗挥片狸聪痉霞雍头身整率够档揍莲屈熄哗饶正坞呐脓诬糟睁歉追法唾闺慷点壤屁辑郊涎涪兆枯改拘腑屡礼堤独乡疲啥劲啊睹箕夺拟脊瑟臭皮逝锡躲豢街彼巾墓良酿窥沃芭芯匹堕5贸腐匿缅催酚剃夸求嘶尾想掏钡粳属拴溺嘛蚤技绍抖鞘起拽奇驮凶植扰摔苟许菊讳铜昼简囚雷宴绊常胰不祥旁庙命刨软擎惫烦睡唉漱泳旱蘑屏装炉您舷斟嗅条惮抵佬箍臼妄迭爸业僧驾挑汪刷侦夯膘淳秸饰朴谗蹭企悼英埠喝养债郑磨后顾舒瓜醋若始拍燃榜庶嘻叶岗抨竣釜办龚胯憋敦闹圃肘士帜撩扭盘含杰葡淘喻性央演憾碉渡黎徐肚嫂涩这楷撼冠狮塑云距疥峨扩链观儡氏棱掉府订吏荫川哼晴盆姥赏吃吊捉浦潭鸟竖规汲酮势恰息誉顷给详磅依峦宛泌晓团倡羌镁曙惧绚糖已目樟高紧疚妮忿艇阀矢贝提凌聂小地廊劫喂踊旨诫种嚼垮友斩迅虽谩盐诛猫烘饯蒜匈重彬星吕毛牌奉缩暖腻赂果矮乞雀腺抗竞钉乖蛊册炊脂蜡傣姜娥窟榆疗锚眉橘踞藻客齐五寒悲带晤翱俊耍措嘴门绰痘吝丑谍鸦绎啡秧姚承狡厉株巳肃烤圭柄磐娃究轧侍兑尔此伍颐抛咽须礁武双浅宣沿嚣败乓嚏姓扁根鹰珍叹杨戚彻冻词临攘炯送臂慰格皑旋炽济橱妻报笔旦家纺评蕊鸡胁博拇捅刚绿阻唤粒场舌诽酒沉硒溪械桥肉辕携骄蛮耙描滴郝役钢宏獭剂芥萧烛峡欢眺森榴蕴蜓仗获稿醉冯几侠勤雇廖用开析螺牧繁李施骆鲁咬氟谤宙蚊哥陡立朗魏辣辫膳塔汛怯器清牲鹃站轮横耻纯窖嵌傻蹄陋袖袁灼疼赌西牡番乱浑苹圆椭袱诀篡璃诗耳俯砧烯聚非透叭确缸胖替虾扦柏秀淫鼓消寅仿庄皆恋妈尿其张曹卒疏瞎岿澜砖结窜辆扫喜枢弧涡筛辱授圣线灌暗寡乃洞栽泛勃篙群然窝婶扬倾悄剁连摸侈河篱碑凋构扮现丘椅粟肪枝申栏翔莎遥优予豌勇季男瘪浇孕纷哲汇岛矩箩莹诺砰世惺盂辐纬匣欲晋丸邯染研诚绽虞柞咱约涅蟹蚌棘壕幌革囊释烩玄长号娄匠钧蛰秃至刁阔效幽饥姿埂仔黍矣般米妊辖宗亩翰橙等坡何猎茹锐杏碎娩哄热严炔敞卜抄鼎骨韩纽猴颖皂乏吁崖拥例哈还摹婆孰湛丫之运端灿幻序押瘦腥谭束违昌涯娱剔挡瘫咕琢中影翘驹兜喘安剑膊都嫩住惶贰惊料彭同墟普市芝桩四妖桌毅愤瞬论羡时渴恫荤捍列玩样侧嚷畔秘岁恨竭史转碗埃议厄涧纳完组侗的吗奠姆统到迷冉呵苛讥特犹钦胆茬罢顶度元捧曝择巡乐扔谬痪谊浆娟苔嫡泅知黄痛虚弄魁芹巨谐堑试州氨飘亲事租鹅披狭咸爷蛹郧康粹叉厢仟垃裤梁晚皖纶陀症讲卯赤菩贱导藉霹帖蜕秋梅桓受淌亡晰雨录寝潦僳标编守曳络鞠惹三泥溜囤惨楞丽芋帅无泊万锰醒杀虐亭澡梧冰港仁虑裳筋昨慈督津能雪覆个末前憎锤纫刘勿淄譬裂尘劈希再谆忱孤苇跟尝本欣址鼠符薪缚厂敛磁涨椿廉拓化氢她樱痕它免奖象渭撅吟罩笛幢嫉砂扒浓松敝奄凳铰解鬼圾遣共焉蔫伪架律思宋绵伊堆蝎残淖斜湘抉伶酗拜亢荚彰蒙盎与亨嘉劣糜慢耐污洁苍尽慨昂桃指锻绪煌妨酷挣写抚醇露毗绣枣征盯郸置欧酝超膨幼除颠潘俩相砍颇削邦弘硕挞疟诅愁焚药讨赘袒烟击宅伙诱陪放茵赔朔耘慌寓量啄岭罗书泵舵蚂喳熙仓霍摆才爹景漓怕邑襄贷碴稍零盏觅瞩饲壹遏红碾娜瘟馈刻咨向版致忠鸥玉颁侵乳卧抽空麻焊墒炙情孪绩瑶辙训柳丹棺戎芜盾蓉辜让掇铅肢镀伏涸沛禁拨惭靠潞爽就燕沼镐羊育凸野载炳创壳颜铭拉朱在匡警艘镰幅蜒党缔模筹枫篷偏馁去舟呢慑刀敢牵敏炸魔恤允删躺棍贮迟子斗旧于糯舜苫蕉蓟闸瑰伐省证程聘车管屑痒惋应锣侥伤滔吩戮期炬扛骡汝啪暑渍射帮芽担函锹胀棋畅富渺揖涂拾郡擞为伯狗坍醚骚村荆先筏倒色串嗽眯椽盒糕搪汁堂私见抠矗递脯昏酥驰敷印掷两磺顿膝吭离备颧屠啸呛睬黑擅稳悦忍了兔蓄阳褪饵灶怀叙鹤只脚嘱使砚介辛丙旬厅掀芍豺勋咋庸负淹疡赚惕踌监轩集仪综好噶呸阅质微益贴杜建幕未蜗钝琼袄韧死疹滚晾工库烂纸读蒂角琳眠捣探朽矽腊升医糙滑义掘多春争懒图第玖大寐腕脏些摇垂臣复锅蔼冕烧吼腆岳搐智谣澳级硝屎会灭直玛背漠氮平式殆蔽剧凯遂着膜撇擒崇撮徊占懂眩滨记赖睛映我弦遇折价锦忻也耽筒险策必割甩紊壁他蜻服啤绞嗡诈锈众课绒商鞭队陕握锌唱础唇誊厨盈轻志断戒斋淀锨易逾跃釉钩职赁佳塌憨濒砸疾邱践宫决是腮树舆丢穗鹏资做咙叁述吠戌襟广驴酣循掸退科殉举炭钮猛碳坠护迁井伦十孟蓬陆笼油枕蔓忽渤撤毒漆县蚕闯羚绕肝墩脸殖粕颂七数嗓寥拂关囱鄙拦衔基谅妙瓷徽务筑寄笋询歪冈颅励风域崔对赣遭煞颊父郁撰悬畸攻降储减回胚稀胺师躁熬饿禽蹬亥诉骑匀皱茁杆赛设示那坎答惠援妹急深辗泉枚启漾扼藏粘胃炮糊晌淡骗落岩辈臆斥祸孙扳奔汉盛忧戴咐瞪截矾发添恬该瓢液酌埔捡公讽键捕挟面拣熟容认罪迹爵燎奶颗碍姐涤层犯木切佣历靶滓穿庞沂贼乔檀俄灸夹粮防搽仅聊蕾淋徒嘘障蛤奏秽阐粉骤请粗腋荣王布卿选凤汞尧否异寨卡啃豹鹊沸腔宇桂氦叼因踪堡族梆烽隐粪待琅缄倍妥副谨变帆轨极拭币宰沦哮借歼太拐案鳖蝇挎盲崎赦诧阑花昧民棚畏衬教蝉甲缴陈路揽凹禾孩权似换骇喀括流冗间女续板掺啮隶缕抹窄柜乒阴桐阿搂浪厚拈萨润袍霉盼躯从渔榷凄候把宦钞挛闰弛伸阉稗细葬铝瘸榨挝悟菜踩视梭巴盟巢涉靖硬壶蒋轿呈肿碌咖栓估采缺牟馆引次处"# "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
))
TEXT_INDEX = list(range(len(TEXT)))
N_OUTPUTS = len(TEXT)
BATCH_SIZE = 32
TEXT_LENGTH = 1
IMAGE_WIDTH = 64 * TEXT_LENGTH
IMAGE_HEIGHT = 64
IMAGE_SHAPE = (IMAGE_WIDTH, IMAGE_HEIGHT, 3)print("N_OUTPUTS", N_OUTPUTS)def random_captcha_text(text_length=1):index = np.random.choice(TEXT_INDEX, text_length)text = TEXT[index]return text, indexdef gen_single(random=True):while True:image = ImageCaptcha(width=IMAGE_WIDTH, height=IMAGE_HEIGHT, fonts=["ios10.ttf"])captcha_text, index = random_captcha_text(text_length=TEXT_LENGTH)if random:#  获得随机生成的验证码#  把验证码列表转为字符串captcha_text = ''.join(captcha_text)#  生成验证码captcha = image.generate(captcha_text)img = Image.open(captcha)img = np.array(img)else:captcha = image.create_captcha_image(captcha_text, (0, 0, 255), (255, 255, 255))img = np.array(captcha)yield img, indexdef gen_batch(batch_size=BATCH_SIZE):images = []labels = []for _ in range(batch_size):image, label = gen_single()images.append(image)labels.append(label)return np.stack(images), np.stack(labels)def parse(img, label):img = tf.cast(img, tf.float32)return pre(img), labeldef pre(img):return img / 127.5 - 1def post(img):img = (img + 1.) * 127.5return np.clip(img, 0, 255).astype(np.uint8)# label (32,)
def label2text(label):labels = TEXT[label]return labelsdef get_iterator():# 需要使用元组,使用列表表示shapes时会报无法hash化的错误data = tf.data.Dataset.from_generator(gen_single, (tf.uint8, tf.int64), (IMAGE_SHAPE, (TEXT_LENGTH,)))data = data.map(parse, num_parallel_calls=6).batch(BATCH_SIZE)# data = data.batch(BATCH_SIZE)data = data.prefetch(BATCH_SIZE)return data.make_initializable_iterator()def get_block(in_x, num_outputs=32, kernel_size=1, stride=1):with slim.arg_scope([slim.conv2d,slim.separable_conv2d],activation_fn=tf.nn.leaky_relu# activation_fn=tf.nn.relu6):#  inceptionnet1 = slim.conv2d(in_x, num_outputs=num_outputs, kernel_size=1, stride=stride)net1 = slim.batch_norm(net1)net3 = slim.conv2d(in_x, num_outputs=num_outputs, kernel_size=3, stride=stride)net3 = slim.batch_norm(net3)net5 = slim.conv2d(in_x, num_outputs=num_outputs, kernel_size=5, stride=stride)net5 = slim.batch_norm(net5)net = tf.concat([net1, net3, net5], axis=3)net = slim.conv2d(net, num_outputs=num_outputs, kernel_size=1, stride=2)net = slim.batch_norm(net)# # net = slim.max_pool2d(net, 3)# net = slim.conv2d(net, num_outputs, kernel_size, 2)# res# net1 = slim.conv2d(in_x, num_outputs, kernel_size=3, stride=stride)# net2 = slim.conv2d(net1, num_outputs, kernel_size=3, stride=stride)# net3 = slim.conv2d(net2, num_outputs, kernel_size=3, stride=stride)# net = net3 + net1# net = slim.conv2d(net, num_outputs, kernel_size, 2)return netdef build_net(in_x):net = get_block(in_x, 128)print(net.shape)net = get_block(net, 128)print(net.shape)net = get_block(net, 256)print(net.shape)net = get_block(net, 256)print(net.shape)net = slim.flatten(net)net = slim.batch_norm(net)print(net.shape)with slim.arg_scope([slim.conv2d,slim.fully_connected],activation_fn=tf.nn.leaky_relu# activation_fn=tf.nn.relu6):net = slim.fully_connected(net, 1024)net = slim.batch_norm(net)net = slim.fully_connected(net, 512)net = slim.batch_norm(net)net = slim.fully_connected(net, num_outputs=N_OUTPUTS)print('net', net.shape)return netdef train():iterator = get_iterator()images, labels = iterator.get_next()labels = tf.squeeze(labels, 1)net = build_net(images)print('labels,net', labels.shape, net.shape)loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=net))train_op = tf.train.AdamOptimizer(LR).minimize(loss)# train_op = tf.train.RMSPropOptimizer(LR).minimize(loss)output = tf.argmax(net, 1)prediction = tf.equal(output, labels)accuracy = tf.reduce_mean(tf.cast(prediction, tf.float32))with tf.Session() as sess:sess.run(tf.global_variables_initializer())sess.run(iterator.initializer)st = time.time()for step in range(1, 1 + TRAIN_STEP):sess.run(train_op)if not step % SHOW_STEP:print("show", step, sess.run([accuracy, loss]))ed = time.time()print('time', ed - st)  # 25sst = edimages_val, labels_val, prediction_val, output_val = sess.run([images, labels, prediction, output])images_val = post(images_val)rows = [np.concatenate(line, 1)for line in np.array_split(images_val, 8)]images_val = np.concatenate(rows, 0)print(labels_val.shape, prediction_val.shape)plt.imshow(images_val)plt.show()print(label2text(labels_val).flatten())print(label2text(output_val.flatten()))if not step % SAVE_STEP:print('save', step)def show_image():iterator = get_iterator()batch = iterator.get_next()with tf.Session() as sess:sess.run(iterator.initializer)for _ in range(10):image, label = sess.run(batch)print(image.shape, label.shape)print(label2text(label))image = np.concatenate(image, 1)print(image.shape)image = post(image)plt.imshow(image)plt.show()def main():train()if __name__ == '__main__':main()

tf 单个文字识别 data 数据输入相关推荐

  1. 文字识别,语音输入全场景应用解析,让你的职场办公效率狂飙

    我们平常在办公的时候,进行文字录入是在所难免的,甚至有时候为了把一些文档做成电脑上的文字版,甚至在哪里拼命的打字输入,一弄就是几个小时,其实对于现在来说,对于大量的文字还使用键盘手打,已经是一种非常落 ...

  2. 文字识别(输入为自然场景中的图像)

    大老板给我定的方向是文字识别.所以在回所之前先把基础知识看一下,相当于综述~ 我的方向与目前的文字识别区别在于,目前的文字识别输入主要是自然场景中的图像,从图像进行文字检测再继而文字识别:而我要做的输 ...

  3. OpenCV+OCR文字识别

    需配置好OpenCV和OCR环境下运行 1.opencv简介 OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库. OpenCV用C ...

  4. OCR文字识别笔记总结

    OCR的全称是Optical Character Recognition,光学字符识别技术.目前应用于各个领域方向,甚至这些应用就在我们的身边,比如身份证的识别,交通路牌的识别,车牌的自动识别等等.本 ...

  5. python 百度ai批量识别_Python基于百度AI的文字识别的示例

    Python基于百度AI的文字识别的示例 使用百度AI的文字识别库,做出的调用示例,其中filePath是图片的路径,可以自行传入一张带有文字的图片,进行识别. 下载baidu-aip这个库,可以直接 ...

  6. 文字识别软件测试初学者,【只要10分钟 快速掌握文字识别】

    [只要10分钟 快速掌握文字识别] 教程 1.获取接口权限       2.下载接口调用工具       3.进行接口调用 具体步骤如下: 1.获取接口权限 1.1  登录网址:ai.baidu.co ...

  7. OCR文字识别—基于CTC/Attention/ACE的三大解码算法

    本文全面梳理一下OCR文字识别三种解码算法,先介绍一下什么是OCR文字识别,然后介绍一下常用的特征提取方法CRNN,最后介绍3种常用的解码算法CTC/Attention/ACE. 什么是OCR文字识别 ...

  8. 【深度学习】OCR文字识别—基于CTC/Attention/ACE的三大解码算法

    本文全面梳理一下OCR文字识别三种解码算法,先介绍一下什么是OCR文字识别,然后介绍一下常用的特征提取方法CRNN,最后介绍3种常用的解码算法CTC/Attention/ACE. 什么是OCR文字识别 ...

  9. python 百度ocr安装_Python基于百度AI实现OCR文字识别

    百度AI功能还是很强大的,百度AI开放平台真的是测试接口的天堂,免费接口很多,当然有量的限制,但个人使用是完全够用的,什么人脸识别.MQTT服务器.语音识别等等,应有尽有. 看看OCR识别免费的量 快 ...

  10. python 百度云文字识别 proxy_Python基于百度AI的文字识别的示例

    Python基于百度AI的文字识别的示例 发布时间:2020-10-03 14:52:27 来源:脚本之家 阅读:66 使用百度AI的文字识别库,做出的调用示例,其中filePath是图片的路径,可以 ...

最新文章

  1. vba基本操作 -- 表单操作
  2. 网页设计作业_Dreamweaver简单网页成品
  3. 通过进程ID获取基地址
  4. portainer MySQL_portainer
  5. 数组(Array)的常用方法
  6. Android 7.0 隐式广播-监听网络变化
  7. Spark报错 Failed to send RPC xxx to/ip:43074 java.nio.channels.ClosedChannelException
  8. mysql存储过程的正确描述_MySQL存储过程中的基本函数描述
  9. 微投抖的1080_1080P不到三千元 微投价格战竟如此激烈
  10. 详解web容器 - Jetty与Tomcat孰强孰弱
  11. 极大似然估计学习笔记
  12. 01 LeNet-5论文笔记-Gradient-Based Learning Applied to Document Recognition
  13. keil4和烧录软件的基本使用
  14. HTML超好看樱花飘落404页面源码+带时间
  15. 区块链技术在食品供应链领域的应用
  16. CSS - 盒子模型 - 外边距
  17. jitpack.io 错误提示 handshake_failure 开发
  18. Lattice Diamond关于原语的使用
  19. matlab时域计算频率,基于MATLAB 的信号时域采样及频率混叠现象分析
  20. Android 图片全屏适配各种屏幕小技巧

热门文章

  1. java excel 水印_Java 添加Excel水印
  2. 【项目】“头脑王者”答题辅助软件
  3. java实现一个月的日历打印,Java实现按年月打印日历功能【基于Calendar】,日历calendar...
  4. 通信协议(一)——UART协议
  5. 个人信息安全规范----7、个人信息安全事件处置
  6. python 常用模块列表
  7. 预约报名小程序 — 预约班车小程序
  8. Servlet和Servlet容器概念
  9. 姿态估计2-03:PVNet(6D姿态估计)-白话给你讲论文-翻译无死角(1)
  10. 三维匹配_为什么你的倾斜摄影三维建模模型效果差,都进来看看