{"id":21803082,"url":"https://github.com/litongjava/muggle_ocr","last_synced_at":"2025-04-13T19:02:06.292Z","repository":{"id":237058197,"uuid":"738783812","full_name":"litongjava/muggle_ocr","owner":"litongjava","description":"muggle_ocr","archived":false,"fork":false,"pushed_at":"2024-04-29T18:46:33.000Z","size":6557,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-29T19:53:35.115Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/litongjava.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-04T03:17:02.000Z","updated_at":"2024-04-29T19:53:41.031Z","dependencies_parsed_at":"2024-05-04T02:00:08.659Z","dependency_job_id":null,"html_url":"https://github.com/litongjava/muggle_ocr","commit_stats":null,"previous_names":["litongjava/muggle_ocr"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fmuggle_ocr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fmuggle_ocr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fmuggle_ocr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fmuggle_ocr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/litongjava","download_url":"https://codeload.github.com/litongjava/muggle_ocr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226744603,"owners_count":17675025,"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":[],"created_at":"2024-11-27T11:38:08.363Z","updated_at":"2024-11-27T11:38:09.011Z","avatar_url":"https://github.com/litongjava.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# muggle_ocr\n## introduction\n**Muggle OCR** 是一个为“麻瓜”设计的高效本地OCR模块，旨在通过简单的几步设置提供强大的文本识别功能，无论是在处理印刷文本还是解析验证码，都能让用户在工作中畅通无阻。\n\n### 特点\n- **易于安装和使用**：只需简单的命令，即可在Python 3.8及以上环境中运行。\n- **双模型支持**：内置了两种模型类型，`ModelType.OCR` 专用于普通印刷文本识别，`ModelType.Captcha` 用于识别4-6位的简单英数验证码。\n- **快速准确**：识别过程通常在10毫秒左右，即便在配置较低的CPU上也能保持15-20毫秒的识别速度。\n## 开源地址\n[gitee](https://gitee.com/ppnt/muggle_ocr)\n[github](https://github.com/litongjava/muggle_ocr)\n\n## install\npython3.8及以上,否则会出现这个错误\nImportError: cannot import name 'Literal' from 'typing'\n```\npip install -r .\\requirements.txt\npython setup.py install\n```\n## SDK类参数\n\n| 参数名     | 必选 | 类型      | 说明                                   |\n| ---------- | ---- | --------- | -------------------------------------- |\n| model_type | No   | ModelType | 指定预置模型类型                       |\n| conf_path  | No   | str       | 指定自定义模型yaml配置文件（绝对路径） |\n\n以上参数两者选其一即可，默认 model_type 为 ModelType.OCR, 若指定 conf_path 参数则优先使用自定义模型。\n\n## 核心API\n\n1. ```SDK.predict(image_bytes: bytes)```\n\n\n\n## 使用指北\n测试图片 test1.png  \n![](https://kerlomz-blog.oss-cn-beijing.aliyuncs.com/test1.png)\n\n测试图片 test2.jpg  \n![](https://kerlomz-blog.oss-cn-beijing.aliyuncs.com/test2.jpg)\n\n**注意: 因模块过新，阿里/清华等第三方源可能尚未更新镜像，因此手动指定使用境外源，为了提高依赖的安装速度，可预先自行安装依赖：tensorflow/numpy/opencv-python/pillow/pyyaml**\n\n1. ```pip install muggle-ocr``` 已经移除,推荐手动安装\n\n2. 调用示例：\n\n   ```python\n   import time\n   \n   # 1. 导入包\n   import muggle_ocr\n   \n   \"\"\"\n   使用预置模型，预置模型包含了[ModelType.OCR, ModelType.Captcha] 两种\n   其中 ModelType.OCR 用于识别普通印刷文本, ModelType.Captcha 用于识别4-6位简单英数验证码\n   \n   \"\"\"\n   \n   # 打开印刷文本图片\n   with open(r\"test1.png\", \"rb\") as f:\n       ocr_bytes = f.read()\n   \n   # 打开验证码图片\n   with open(r\"test2.jpg\", \"rb\") as f:\n       captcha_bytes = f.read()\n   \n   # 2. 初始化；model_type 可选: [ModelType.OCR, ModelType.Captcha]\n   sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)\n   \n   # ModelType.Captcha 可识别光学印刷文本\n   for i in range(5):\n       st = time.time()\n       # 3. 调用预测函数\n       text = sdk.predict(image_bytes=ocr_bytes)\n       print(text, time.time() - st)\n   \n   # ModelType.Captcha 可识别4-6位验证码\n   sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)\n   for i in range(5):\n       st = time.time()\n       # 3. 调用预测函数\n       text = sdk.predict(image_bytes=captcha_bytes)\n       print(text, time.time() - st)\n   \n   \"\"\"\n   使用自定义模型\n   支持基于 https://github.com/kerlomz/captcha_trainer 框架训练的模型\n   训练完成后，进入导出编译模型的[out]路径下, 把[graph]路径下的pb模型和[model]下的yaml配置文件放到同一路径下。\n   将 conf_path 参数指定为 yaml配置文件 的绝对或项目相对路径即可，其他步骤一致，如下示例：\n   \"\"\"\n   with open(r\"test3.jpg\", \"rb\") as f:\n       b = f.read()\n   sdk = muggle_ocr.SDK(conf_path=\"./ocr.yaml\")\n   text = sdk.predict(image_bytes=b)\n   ```\n\n   \n\n**输出结果:**\n\n```shell script\nMuggleOCR Session [ocr] Loaded.\n曹文轩教授作序推荐 0.010004520416259766\n曹文轩教授作序推荐 0.009941339492797852\n曹文轩教授作序推荐 0.0109710693359375\n曹文轩教授作序推荐 0.00901031494140625\n曹文轩教授作序推荐 0.010967493057250977\n\nMuggleOCR Session [captcha] Loaded.\nceey 0.010970592498779297\nceey 0.009973287582397461\nceey 0.010970592498779297\nceey 0.009973526000976562\nceey 0.009973287582397461\n```\n\nOCR和验证码识别的速度基本都在10ms左右，低配CPU可能需要15-20ms。本模块仅支持单行识别，如有多行识别需求请自行采用目标检测预裁图片。\n## 交流群\n对本项目感兴趣的可以加 微信 群交流：jdk131219","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flitongjava%2Fmuggle_ocr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flitongjava%2Fmuggle_ocr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flitongjava%2Fmuggle_ocr/lists"}