{"id":13543416,"url":"https://github.com/yinchangchang/ocr_densenet","last_synced_at":"2025-04-02T12:32:23.933Z","repository":{"id":64717741,"uuid":"136137416","full_name":"yinchangchang/ocr_densenet","owner":"yinchangchang","description":"第一届西安交通大学人工智能实践大赛（2018AI实践大赛--图片文字识别）第一名；仅采用densenet识别图中文字","archived":false,"fork":false,"pushed_at":"2019-03-12T08:42:01.000Z","size":6969,"stargazers_count":459,"open_issues_count":15,"forks_count":159,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-11-03T10:32:51.488Z","etag":null,"topics":["densenet","ocr","ocr-recognition","python","pytorch"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yinchangchang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-05T07:27:26.000Z","updated_at":"2024-10-23T07:31:26.000Z","dependencies_parsed_at":"2022-12-14T22:36:39.378Z","dependency_job_id":null,"html_url":"https://github.com/yinchangchang/ocr_densenet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yinchangchang%2Focr_densenet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yinchangchang%2Focr_densenet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yinchangchang%2Focr_densenet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yinchangchang%2Focr_densenet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yinchangchang","download_url":"https://codeload.github.com/yinchangchang/ocr_densenet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246815875,"owners_count":20838532,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["densenet","ocr","ocr-recognition","python","pytorch"],"created_at":"2024-08-01T11:00:31.336Z","updated_at":"2025-04-02T12:32:18.919Z","avatar_url":"https://github.com/yinchangchang.png","language":"Python","funding_links":[],"categories":["Optical Character Recognition Engines and Frameworks","Python"],"sub_categories":["CTPN [paper:2016](https://arxiv.org/pdf/1609.03605.pdf)"],"readme":"# OCR\n[第一届西安交通大学人工智能实践大赛（2018AI实践大赛--图片文字识别）](http://competition.heils.cn/main.html)冠军\n\n\n# 模型结果\n该比赛计算每一个条目的f1score，取所有条目的平均，具体计算方式在[这里](http://competition.heils.cn/main.html)。这里的计算方式不对一句话里的相同文字重复计算，故f1score比提交的最终结果低：\n\n|  -  | train | val | \n| :----------------: | :----------------: | :----------------: | \n| f1score   | 0.9911 | 0.9582 |\n| recall    | 0.9943 | 0.9574 |\n| precision | 0.9894 | 0.9637 |\n\n# 模型说明\n1. 模型\n\n采用densenet结构，模型输入为(64×512)的图片，输出为(8×64×2159)的概率。\n\n将图片划分为多个(8×8)的方格，在每个方格预测2159个字符的概率。\n\n2. Loss\n\n将(8×64×2159)的概率沿着长宽方向取最大值，得到(2159)的概率，表示这张图片里有对应字符的概率。\n\nbalance: 对正例和负例分别计算loss，使得正例loss权重之和与负例loss权重之和相等，解决数据不平衡的问题。\n\nhard-mining\n\n3. 文字检测\n将(8×64×2159)的概率沿着宽方向取最大值，得到(64×2159)的概率。\n沿着长方向一个个方格预测文字，然后连起来可得到一句完整的语句。\n\n存在问题：两个连续的文字无法重复检测\n\n下图是一个文字识别正确的示例：的长为半径作圆\n\n\u003cimg src=\"files/src/B1000_0.png\" width=50%\u003e\n\n下图是一个文字识别错误的示例：为10元；经粗加工后销售，每\n\n\u003cimg src=\"files/src/A81.png\" width=50%\u003e\n\n\n# 文件目录\n\tocr\n\t|\n\t|--code\n\t|\n\t|--files\n\t|\t|\n\t|\t|--train.csv\n\t|\n\t|--data\n\t\t|\n\t\t|--dataset\n\t\t|\t|\n\t\t|\t|--train\n\t\t|\t|\n\t\t|\t|--test\n\t\t|\n\t\t|--result\n\t\t|\t|\n\t\t|\t|--test_result.csv\n\t\t|\n\t\t|--images\t\t此文件夹放置任何图片均可，我放的celebA数据集用作pretrain\n\n# 运行环境\nUbuntu16.04, python2.7, CUDA9.0\n\n安装[pytorch](https://pytorch.org/), 推荐版本: 0.2.0_3\n```\npip install -r requirement.txt\n```\n\n# 下载数据\n从[这里](https://pan.baidu.com/s/1w0iEE7q84IolmZXwttOxVw)下载初赛、复赛数据、模型，合并训练集、测试集。\n\n\n# 预处理\n如果不更换数据集，不需要执行这一步。\n\n如果更换其他数据集，一并更换 files/train.csv\n```\ncd code/preprocessing\npython map_word_to_index.py\npython analysis_dataset.py  \n```\n\n# 训练\n```\ncd code/ocr\npython main.py\n```\n\n# 测试\nf1score在0.9以下，lr=0.001，不使用hard-mining；\n\nf1score在0.9以上，lr=0.0001，使用hard-mining；\n\n生成的model保存在不同的文件夹里。\n```\ncd code/ocr\npython main.py --phase test --resume  ../../data/models-small/densenet/eval-16-1/best_f1score.ckpt\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyinchangchang%2Focr_densenet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyinchangchang%2Focr_densenet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyinchangchang%2Focr_densenet/lists"}