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 0000000..24184e1 Binary files /dev/null and b/sample.png differ