# QiAlgo青祁
## About 关于
QiAlgo_OCR (青祁OCR)是基于 `QiAlgoML 青祁机器学习` 项目中的神经网络子项目分离开发的 Python 库,是一种对特定场景进行光学字符识别(Optical Character Recognition,简称OCR)的解决方案。
QiAlgo_OCR 擅长序列到序列(Sequence-to-Sequence)任务,或者说场景文本识别(Scene Text Recognition)任务,用于提取在复杂背景中的文本。 例如对验证码的识别、对车牌号码的识别等任务。
在此发布的版本将针对图形验证码的识别任务进行强化,用于快速检验图形验证码的可靠程度。通过对大批量的随机数据进行神经网络训练,以实现高效、快速的评估。
## 使用到的依赖
| 名称 | 版本 | 用途 |
|-------------|--------|--------------------------|
| onnxruntime | 1.16.1 | ONNX 运行时,用于加载模型。 |
| Pillow | 10.0.1 | Python 图像处理 |
| torch | 2.1.0 | PyTorch 项目,用于实现硬件类型识别等功能 |
| torchvision | 0.16.0 | PyTorch 项目的一部分,用于图像预处理。 |
| PyYAML | 6.0.1 | 读取配置文件。 |
您可能需要安装不同的依赖以在不同的硬件下运行,例如在使用 GPU 进行推理时,可能需要安装对应的 GPU 版本依赖。
## 当前支持的验证码类型
| 库 | 样例 |
|---------|----------------------|
| Captcha |  |
| |  |
## 使用
### 安装
#### 在线安装
```shell
pip install QiAlgo-OCR
```
#### 通过 whl 进行安装
1. 在 [Releases页面](https://github.com/Morton-L/QiAlgo_OCR/releases) 下载 whl 包
2. 安装 whl 包```pip install QiAlgo_OCR-1.0.0-py3-none-any.whl```
### 使用示例
```python
from QiAlgo_OCR import QiAlgo_OCR
def qi_ml_ocr():
qi = QiAlgo_OCR()
with open('1AGB.jpg', 'rb') as f:
image_bytes = f.read()
qi.load_image(
image=image_bytes
)
is_successful, results = qi.onnx_predictor()
if is_successful:
print(results) # 1AGB
if __name__ == '__main__':
qi_ml_ocr()
```
除了使用字节串 (bytestring)外,QiAlgo_OCR 还可以识别Base64、路径、PIL(Pillow)库中的Image图像对象、PurePath路径
## 基于源码打包
1. 将 onnx 模型命名为 `model.onnx` 并放置在 `QiAlgo_OCR/model/` 目录下;
2. ```python setup.py sdist bdist_wheel```
## 声明
### 科学技术伦理道德
科技是把双刃剑, QiAlgo_OCR 的设计初衷是用于检验图形验证码的可靠程度,但不可避免的是这确实可以对图形验证码进行快速解析以实现某些违反伦理道德的事情。为此郑重声明:
1. 本项目 `仅可用于学习` 和 `在法律允许的范围内进行可靠性测试` 用途;
2. 使用本项目进行的 `一切违反法律法规的事项均是不被允许的` ,即不允许使用本项目进行违反法律法规的尝试。
Raw data
{
"_id": null,
"home_page": "https://github.com/Morton-L/QiAlgo_OCR",
"name": "QiAlgo-OCR",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "",
"keywords": "",
"author": "Morton Li",
"author_email": "Morton Li <Morton.L@Outlook.com>",
"download_url": "https://files.pythonhosted.org/packages/af/68/4b3602fd12efc0a65d6854eeec5c2e24c48107881be017885569def2b92b/QiAlgo_OCR-1.0.1.tar.gz",
"platform": null,
"description": "# QiAlgo\u9752\u7941\n\n## About \u5173\u4e8e\n\nQiAlgo_OCR (\u9752\u7941OCR)\u662f\u57fa\u4e8e `QiAlgoML \u9752\u7941\u673a\u5668\u5b66\u4e60` \u9879\u76ee\u4e2d\u7684\u795e\u7ecf\u7f51\u7edc\u5b50\u9879\u76ee\u5206\u79bb\u5f00\u53d1\u7684 Python \u5e93\uff0c\u662f\u4e00\u79cd\u5bf9\u7279\u5b9a\u573a\u666f\u8fdb\u884c\u5149\u5b66\u5b57\u7b26\u8bc6\u522b\uff08Optical Character Recognition\uff0c\u7b80\u79f0OCR\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002\n\nQiAlgo_OCR \u64c5\u957f\u5e8f\u5217\u5230\u5e8f\u5217\uff08Sequence-to-Sequence\uff09\u4efb\u52a1\uff0c\u6216\u8005\u8bf4\u573a\u666f\u6587\u672c\u8bc6\u522b\uff08Scene Text Recognition\uff09\u4efb\u52a1\uff0c\u7528\u4e8e\u63d0\u53d6\u5728\u590d\u6742\u80cc\u666f\u4e2d\u7684\u6587\u672c\u3002 \u4f8b\u5982\u5bf9\u9a8c\u8bc1\u7801\u7684\u8bc6\u522b\u3001\u5bf9\u8f66\u724c\u53f7\u7801\u7684\u8bc6\u522b\u7b49\u4efb\u52a1\u3002\n\n\u5728\u6b64\u53d1\u5e03\u7684\u7248\u672c\u5c06\u9488\u5bf9\u56fe\u5f62\u9a8c\u8bc1\u7801\u7684\u8bc6\u522b\u4efb\u52a1\u8fdb\u884c\u5f3a\u5316\uff0c\u7528\u4e8e\u5feb\u901f\u68c0\u9a8c\u56fe\u5f62\u9a8c\u8bc1\u7801\u7684\u53ef\u9760\u7a0b\u5ea6\u3002\u901a\u8fc7\u5bf9\u5927\u6279\u91cf\u7684\u968f\u673a\u6570\u636e\u8fdb\u884c\u795e\u7ecf\u7f51\u7edc\u8bad\u7ec3\uff0c\u4ee5\u5b9e\u73b0\u9ad8\u6548\u3001\u5feb\u901f\u7684\u8bc4\u4f30\u3002\n\n## \u4f7f\u7528\u5230\u7684\u4f9d\u8d56\n\n| \u540d\u79f0 | \u7248\u672c | \u7528\u9014 |\n|-------------|--------|--------------------------|\n| onnxruntime | 1.16.1 | ONNX \u8fd0\u884c\u65f6\uff0c\u7528\u4e8e\u52a0\u8f7d\u6a21\u578b\u3002 |\n| Pillow | 10.0.1 | Python \u56fe\u50cf\u5904\u7406 |\n| torch | 2.1.0 | PyTorch \u9879\u76ee\uff0c\u7528\u4e8e\u5b9e\u73b0\u786c\u4ef6\u7c7b\u578b\u8bc6\u522b\u7b49\u529f\u80fd |\n| torchvision | 0.16.0 | PyTorch \u9879\u76ee\u7684\u4e00\u90e8\u5206\uff0c\u7528\u4e8e\u56fe\u50cf\u9884\u5904\u7406\u3002 |\n| PyYAML | 6.0.1 | \u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\u3002 |\n\n\u60a8\u53ef\u80fd\u9700\u8981\u5b89\u88c5\u4e0d\u540c\u7684\u4f9d\u8d56\u4ee5\u5728\u4e0d\u540c\u7684\u786c\u4ef6\u4e0b\u8fd0\u884c\uff0c\u4f8b\u5982\u5728\u4f7f\u7528 GPU \u8fdb\u884c\u63a8\u7406\u65f6\uff0c\u53ef\u80fd\u9700\u8981\u5b89\u88c5\u5bf9\u5e94\u7684 GPU \u7248\u672c\u4f9d\u8d56\u3002\n\n## \u5f53\u524d\u652f\u6301\u7684\u9a8c\u8bc1\u7801\u7c7b\u578b\n\n| \u5e93 | \u6837\u4f8b |\n|---------|----------------------|\n| Captcha |  |\n| |  |\n\n\n## \u4f7f\u7528\n\n### \u5b89\u88c5\n\n#### \u5728\u7ebf\u5b89\u88c5\n\n```shell\npip install QiAlgo-OCR\n```\n\n#### \u901a\u8fc7 whl \u8fdb\u884c\u5b89\u88c5\n\n1. \u5728 [Releases\u9875\u9762](https://github.com/Morton-L/QiAlgo_OCR/releases) \u4e0b\u8f7d whl \u5305\n2. \u5b89\u88c5 whl \u5305```pip install QiAlgo_OCR-1.0.0-py3-none-any.whl```\n\n### \u4f7f\u7528\u793a\u4f8b\n\n```python\nfrom QiAlgo_OCR import QiAlgo_OCR\n\n\ndef qi_ml_ocr():\n qi = QiAlgo_OCR()\n\n with open('1AGB.jpg', 'rb') as f:\n image_bytes = f.read()\n\n qi.load_image(\n image=image_bytes\n )\n\n is_successful, results = qi.onnx_predictor()\n if is_successful:\n print(results) # 1AGB\n\n\nif __name__ == '__main__':\n qi_ml_ocr()\n```\n\n\u9664\u4e86\u4f7f\u7528\u5b57\u8282\u4e32 (bytestring)\u5916\uff0cQiAlgo_OCR \u8fd8\u53ef\u4ee5\u8bc6\u522bBase64\u3001\u8def\u5f84\u3001PIL\uff08Pillow\uff09\u5e93\u4e2d\u7684Image\u56fe\u50cf\u5bf9\u8c61\u3001PurePath\u8def\u5f84\n\n## \u57fa\u4e8e\u6e90\u7801\u6253\u5305\n\n1. \u5c06 onnx \u6a21\u578b\u547d\u540d\u4e3a `model.onnx` \u5e76\u653e\u7f6e\u5728 `QiAlgo_OCR/model/` \u76ee\u5f55\u4e0b\uff1b\n2. ```python setup.py sdist bdist_wheel```\n\n## \u58f0\u660e\n\n### \u79d1\u5b66\u6280\u672f\u4f26\u7406\u9053\u5fb7\n\n\u79d1\u6280\u662f\u628a\u53cc\u5203\u5251\uff0c QiAlgo_OCR \u7684\u8bbe\u8ba1\u521d\u8877\u662f\u7528\u4e8e\u68c0\u9a8c\u56fe\u5f62\u9a8c\u8bc1\u7801\u7684\u53ef\u9760\u7a0b\u5ea6\uff0c\u4f46\u4e0d\u53ef\u907f\u514d\u7684\u662f\u8fd9\u786e\u5b9e\u53ef\u4ee5\u5bf9\u56fe\u5f62\u9a8c\u8bc1\u7801\u8fdb\u884c\u5feb\u901f\u89e3\u6790\u4ee5\u5b9e\u73b0\u67d0\u4e9b\u8fdd\u53cd\u4f26\u7406\u9053\u5fb7\u7684\u4e8b\u60c5\u3002\u4e3a\u6b64\u90d1\u91cd\u58f0\u660e\uff1a\n\n1. \u672c\u9879\u76ee `\u4ec5\u53ef\u7528\u4e8e\u5b66\u4e60` \u548c `\u5728\u6cd5\u5f8b\u5141\u8bb8\u7684\u8303\u56f4\u5185\u8fdb\u884c\u53ef\u9760\u6027\u6d4b\u8bd5` \u7528\u9014\uff1b\n2. \u4f7f\u7528\u672c\u9879\u76ee\u8fdb\u884c\u7684 `\u4e00\u5207\u8fdd\u53cd\u6cd5\u5f8b\u6cd5\u89c4\u7684\u4e8b\u9879\u5747\u662f\u4e0d\u88ab\u5141\u8bb8\u7684` \uff0c\u5373\u4e0d\u5141\u8bb8\u4f7f\u7528\u672c\u9879\u76ee\u8fdb\u884c\u8fdd\u53cd\u6cd5\u5f8b\u6cd5\u89c4\u7684\u5c1d\u8bd5\u3002\n",
"bugtrack_url": null,
"license": "",
"summary": "QiAlgo_OCR(\u9752\u7941OCR)\u662f\u57fa\u4e8e'QiAlgoML\u9752\u7941\u673a\u5668\u5b66\u4e60\u9879\u76ee'\u4e2d\u7684\u795e\u7ecf\u7f51\u7edc\u5b50\u9879\u76ee\u5206\u79bb\u5f00\u53d1\u7684Python\u5e93\uff0c\u662f\u4e00\u79cd\u5bf9\u7279\u5b9a\u573a\u666f\u8fdb\u884c\u5149\u5b66\u5b57\u7b26\u8bc6\u522b\uff08Optical Character Recognition\uff0c\u7b80\u79f0OCR\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002",
"version": "1.0.1",
"project_urls": {
"Bug Tracker": "https://github.com/Morton-L/QiAlgo_OCR/issues",
"Homepage": "https://github.com/Morton-L/QiAlgo_OCRt"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "446eaaaa1c46a4ee20b808cfecba6cd08bf0f4c02ef063d2aedcb6652a39628f",
"md5": "d959c8be1338292e9981bc78bfc4b68e",
"sha256": "9bebb6c6f6e9568e642837947d06069d6b35339e3d994740c00e793802c00b12"
},
"downloads": -1,
"filename": "QiAlgo_OCR-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d959c8be1338292e9981bc78bfc4b68e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 10232860,
"upload_time": "2023-10-26T08:36:30",
"upload_time_iso_8601": "2023-10-26T08:36:30.663784Z",
"url": "https://files.pythonhosted.org/packages/44/6e/aaaa1c46a4ee20b808cfecba6cd08bf0f4c02ef063d2aedcb6652a39628f/QiAlgo_OCR-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "af684b3602fd12efc0a65d6854eeec5c2e24c48107881be017885569def2b92b",
"md5": "3b846fbd60837b166660bc2607f609bd",
"sha256": "b498fa24b7aa311028c1b37923a5ba64410708ac9dd87c0b17bf144a75e94513"
},
"downloads": -1,
"filename": "QiAlgo_OCR-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "3b846fbd60837b166660bc2607f609bd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 10235850,
"upload_time": "2023-10-26T08:36:40",
"upload_time_iso_8601": "2023-10-26T08:36:40.626733Z",
"url": "https://files.pythonhosted.org/packages/af/68/4b3602fd12efc0a65d6854eeec5c2e24c48107881be017885569def2b92b/QiAlgo_OCR-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-26 08:36:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Morton-L",
"github_project": "QiAlgo_OCR",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "onnxruntime",
"specs": [
[
"~=",
"1.16.1"
]
]
},
{
"name": "Pillow",
"specs": [
[
"~=",
"10.0.1"
]
]
},
{
"name": "torch",
"specs": [
[
"==",
"2.1.0"
]
]
},
{
"name": "torchvision",
"specs": [
[
"==",
"0.16.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
"~=",
"65.5.1"
]
]
},
{
"name": "PyYAML",
"specs": [
[
"~=",
"6.0.1"
]
]
}
],
"lcname": "qialgo-ocr"
}