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

@@ -23,6 +23,12 @@ ['!', '"', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', '、', '。', '々', '…', '‘', '’', '“', '”'] ``` +关于数据的处理部分,从服务器下载到的原始数据是 `trn_gnt.zip` 解压之后是 `gnt.alz`, 需要再次解压得到一个包含 gnt文件的文件夹。里面每一个gnt文件都包含了若干个汉字及其标注。直接处理比较麻烦,也不方便抽取出图片再进行操作,**虽然转为图片存入文件夹比较直观,但是不适合批量读取和训练**, 后面我们统一转为tfrecord进行训练。 + +**更新**: +实际上,由于单个汉字图片其实很小,差不多也就最大80x80的大小,这个大小不适合转成图片保存到本地,因此我们将hwdb原始的二进制保存为tfrecord。同时也方便后面训练,可以直接从tfrecord读取图片进行训练。 + + ## Model 关于我们采用的OCR模型的构建,我们大致采用的是比较先进的MobileNetV3架构,同时设计了一个修改的过的MobileNetV3Big的更深网络。主要考虑模型的轻量型和表达能力。最终训练结果表明,我们的模型可以在中文手写字上达到约99.8%的准确率。 \ No newline at end of file diff --git a/sample.png b/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..24184e17e372b92643bae3355520c5f559ad66e9 GIT binary patch literal 72423 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 ns%zl)FSh?D8N`1u+Q=<2sP$rid4bUj4;YHFDl(