captcha-recognizer


Namecaptcha-recognizer JSON
Version 0.7.0 PyPI version JSON
download
home_pagehttps://github.com/chenwei-zhao/captcha-recognizer
Summary滑块验证码识别,基于YOLOv8训练,支持单缺口、多缺口、截图识别
upload_time2025-02-12 06:58:14
maintainerNone
docs_urlNone
authorZhao Chenwei
requires_python>=3.8
licenseMIT
keywords captcha slider captcha-recognizer captcha_recognizer 滑块 滑块验证码 滑块识别
VCS
bugtrack_url
requirements ultralytics onnxruntime onnx
Travis-CI No Travis.
coveralls test coverage No coveralls.
            简体中文 | [English](https://github.com/chenwei-zhao/captcha-recognizer/blob/main/README_en.md)

# Captcha-Recognizer
Captcha-Recognizer是一个易用的通用滑块验证码识别库,通过深度学习训练通用的缺口检测模型,基于训练的结果,识别出验证码中的滑块缺口位置,并返回缺口的坐标与可信度。


# 支持的验证码类型
- 单缺口验证码背景图
- 多缺口验证码背景图
- 验证码截图(包含滑块和背景图)


# 版本要求

* ``Python`` >=  3.8.0
* ``ultralytics`` >=  8.0.0
* ``torch`` >=  1.8.0
* ``onnxruntime``
* ``onnx``

* Works on Linux, Windows, macOS


# 使用方式

- [HTTP API](https://github.com/chenwei-zhao/captcha-api)
- Pypi

## HTTP API

文档请移步: [captcha-api](https://github.com/chenwei-zhao/captcha-api)

## Pypi

### 从 Pypi 安装


```bash
pip install captcha-recognizer
```



### 基于单缺口/多缺口验证码背景图识别滑块缺口
```Python

from captcha_recognizer.recognizer import Recognizer

# source传入图片路径, verbose=False表示关闭冗余输出
# show_result 为True展示识别效果图 (生产环境请设置show_result=False)
# save 为True保存识别结果图 (生产环境请设置save=False)
recognizer = Recognizer()
box, confidence = recognizer.identify_gap(source='your_example_image.png', verbose=False)

print(f'缺口坐标: {box}')
print(f'可信度: {confidence}')

"""
打印结果如下:
缺口方框坐标: [331.72052001953125, 55.96122741699219, 422.079345703125, 161.7498779296875]
可信度: 0.9513089656829834

坐标原点:图片左上角
缺口方框坐标为缺口方框左上角和右下角距离坐标原点的距离
"""
```

### 基于单缺口/多缺口验证码背景图识别滑块缺口的示例图片

包括且不限于以下类型、尺寸的滑块图片检测


<p>示例图 1</p>
<p>尺寸 552*344</p>
<img 
  src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example1.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example1.png"
>
<p>识别效果示例图 1</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict1.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict1.png"
>

<p>示例图 2</p>
<p>尺寸 260*160</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example2.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example2.png"
>

<p>识别效果示例图 2</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict2.png"
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict2.png"
>

<p>示例图 3</p>
<p>尺寸 400*200</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example3.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example1.png"
>
<p>识别效果示例图3</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict3.png"
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict3.png"
>


<p>示例图 4</p>
<p>尺寸 672*390</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example4.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example4.png"
>
<p>识别效果示例图4</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict4.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict4.png"
>

<p>示例图 5</p>
<p>尺寸 280*155</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example5.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example5.png"
>
<p>识别效果示例图 5</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict5.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict5.png"
>

<p>示例图 6</p>
<p>尺寸 590*360</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example6.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example6.png"
>
<p>识别效果示例图 6</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict6.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict6.png"
>

<p>示例图 7</p>
<p>尺寸 320*160</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example7.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example7.png"
>
<p>识别效果示例图 7</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict7.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict7.png"
>



### 基于验证码截图的识别滑块缺口
```Python

from captcha_recognizer.recognizer import Recognizer

# source传入图片路径, verbose=False表示关闭冗余输出
# show_result 为True展示识别效果图 (生产环境请设置show_result=False)
# save 为True保存识别结果图 (生产环境请设置save=False)
recognizer = Recognizer()
box, confidence = recognizer.identify_gap(source='your_example_image.png', verbose=False)

print(f'缺口坐标: {box}')
print(f'可信度: {confidence}')

"""
打印结果如下:
缺口方框坐标: [331.72052001953125, 55.96122741699219, 422.079345703125, 161.7498779296875]
可信度: 0.9513089656829834

坐标原点:图片左上角
缺口方框坐标为缺口方框左上角和右下角距离坐标原点的距离
"""
```

### 基于验证码截图的滑块识别滑块缺口示例

包括且不限于以下类型、尺寸的滑块验证码截图


<p>示例图 8</p>
<p>尺寸 305*156</p>
<img 
  src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example8.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example8.png"
>
<p>识别效果示例图 8</p>
<img src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict8.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict8.png"
>

### 基于验证码截图识别滑块距离

```python3
from captcha_recognizer.recognizer import Recognizer

# source传入图片路径或图片对象
# verbose=False表示关闭冗余输出
# show_result 为True展示识别效果图 (生产环境请设置show_result=False)
# save 为True保存识别结果图 (生产环境请设置save=False)
recognizer = Recognizer()
distance = recognizer.identify_distance_by_screenshot(source='your_screenshot.jpg')

print('滑块距离', distance)
```



# 注意事项
## 偏移量
某些种类的滑块验证码,滑块初始位置存在一定偏移,以下面图中的滑块初始位置为例:

<p>示例图 9</p>
<img 
  src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/offset2.png"
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/offset2.png"
>



如示例图9中:
- 第一条黑线位置为滑块初始位置,距离图片边框有大概有8个像素的偏移量(offset为8)
- 识别结果的缺口坐标为 [x1, y1, x2, y2] 对应缺口的左上角和右下角坐标(坐标原点为图片左上角)
- 第二条黑线的X轴坐标值对应缺口识别结果左上角的X轴坐标值,此处值为154(x1为154)
- 因此实际滑块的距离为 x1-offset (154-8=146)
- 也就是说,实际的滑块距离为缺口的x1值减去滑块距离图片边框的偏移量(offset)

## 图片缩放
某些验证码,前端渲染时会对图片进行缩放,因此实际的滑块距离也要按照图片缩放比例进行计算。

<p>示例图 10</p>
<img 
  src="https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/rendered_size.png" 
  alt="https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/rendered_size.png"
>


## 图片识别耗时
- 首次识别图片耗时较长(2s左右);
- 后续单张图片的识别在60ms(60毫秒)左右;
- 因为首次识别图片时需要将模型从磁盘加载到内存中,并进行一系列的初始化工作,如权重加载、内存分配等。这个过程相对耗时;
- 一旦模型加载完成并初始化好,后续的图片预测就可以直接利用已经加载好的模型和分配好的资源,从而避免了重复加载和初始化的开销。



# 安装过程中遇到问题
- Error loading “xxx\Lib\site-packages\torch\lib\fbgemm.dll” or one of its dependencies.
  - 参考 [Issues 2](https://github.com/chenwei-zhao/captcha-recognizer/issues/2)
- Model Unsupported model IR version: 9, max supported IR version: 8
    - 参考 [Issues 1](https://github.com/chenwei-zhao/captcha-recognizer/issues/1)
    


# 项目维护

- 如果你对本项目感兴趣,欢迎star。
- 项目长期维护。
- 如果你遇到本项目不能识别的滑块验证码,欢迎提[issue](https://github.com/chenwei-zhao/captcha-recognizer/issues)。
- 有任何问题,欢迎提[issue](https://github.com/chenwei-zhao/captcha-recognizer/issues)。

# 更多联系方式
- Gmail: chenwei.zhaozhao@gmail.com
- 163/网易: chenwei_nature@163.com


# 免责声明
本项目不针对任何一家验证码厂商,项目所有内容仅供学习交流使用,不用于其他任何目的,严禁用于非法用途。

# 许可证
MIT license

# 感谢你的支持

## Stargazers

[![Stargazers repo roster for @chenwei-zhao/captcha-recognizer](https://reporoster.com/stars/dark/chenwei-zhao/captcha-recognizer)](https://github.com/chenwei-zhao/captcha-recognizer/stargazers)

## Forkers
[![Forkers repo roster for @chenwei-zhao/captcha-recognizer](https://reporoster.com/forks/dark/chenwei-zhao/captcha-recognizer)](https://github.com/chenwei-zhao/captcha-recognizer/network/members)


## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=chenwei-zhao/captcha-recognizer&type=Date)](https://star-history.com/#chenwei-zhao/captcha-recognizer&Date)

# 版本历史

0.7.0 (2025-02-12)
* 优化滑块截图的识别逻辑 (Optimize the logic of sliding block screenshot recognition)

0.6.0 (2024-11-13)
* 增强模型泛化能力 (Enhance model generalization)

0.5.0 (2024-11-06)
* 新增功能:基于验证码截图识别滑块距离 (Added support for recognizing the distance of the sliding block in screenshot)

0.4.0 (2024-10-10)
* 增强模型泛化能力 (Enhance model generalization)

0.3.3 (2024-09-29)
* 添加HTTP API文档链接 (Add HTTP API docs link)

0.3.2 (2024-09-24)
* 修复图片链接错误 (Fix image link)

0.3.1 (2024-09-24)
* 添加一些注意事项 (Add some notes)
* 
0.3.0 (2024-09-23)
* 支持截图类型的验证码识别 (Screenshot support)

0.2.1 (2024-09-10)
* Fix example image link

0.2.0 (2024-09-10)
* Improve the captcha compatibility of the library

0.1.6 (2024-09-06)
* Update README

0.1.5 (2024-09-06)
* Compress sample picture

0.1.4 (2024-08-30)
* Handle the case where the result is empty
* Split workflow to two jobs

0.1.3 (2024-08-26)

* Optimize example image css in README

0.1.2 (2024-08-26)

* Update example image url in README

0.1.1 (2024-08-26)

* Update README

0.1.0 (2024-08-23)

* First release.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/chenwei-zhao/captcha-recognizer",
    "name": "captcha-recognizer",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "captcha, slider, captcha-recognizer, captcha_recognizer, \u6ed1\u5757, \u6ed1\u5757\u9a8c\u8bc1\u7801, \u6ed1\u5757\u8bc6\u522b",
    "author": "Zhao Chenwei",
    "author_email": "chenwei.zhaozhao@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/34/bd/f4358c2963c76e47d028a9fc37eaa330235013a76ccf25a4a6985d3ee354/captcha_recognizer-0.7.0.tar.gz",
    "platform": null,
    "description": "\u7b80\u4f53\u4e2d\u6587 | [English](https://github.com/chenwei-zhao/captcha-recognizer/blob/main/README_en.md)\n\n# Captcha-Recognizer\nCaptcha-Recognizer\u662f\u4e00\u4e2a\u6613\u7528\u7684\u901a\u7528\u6ed1\u5757\u9a8c\u8bc1\u7801\u8bc6\u522b\u5e93\uff0c\u901a\u8fc7\u6df1\u5ea6\u5b66\u4e60\u8bad\u7ec3\u901a\u7528\u7684\u7f3a\u53e3\u68c0\u6d4b\u6a21\u578b\uff0c\u57fa\u4e8e\u8bad\u7ec3\u7684\u7ed3\u679c\uff0c\u8bc6\u522b\u51fa\u9a8c\u8bc1\u7801\u4e2d\u7684\u6ed1\u5757\u7f3a\u53e3\u4f4d\u7f6e\uff0c\u5e76\u8fd4\u56de\u7f3a\u53e3\u7684\u5750\u6807\u4e0e\u53ef\u4fe1\u5ea6\u3002\n\n\n# \u652f\u6301\u7684\u9a8c\u8bc1\u7801\u7c7b\u578b\n- \u5355\u7f3a\u53e3\u9a8c\u8bc1\u7801\u80cc\u666f\u56fe\n- \u591a\u7f3a\u53e3\u9a8c\u8bc1\u7801\u80cc\u666f\u56fe\n- \u9a8c\u8bc1\u7801\u622a\u56fe\uff08\u5305\u542b\u6ed1\u5757\u548c\u80cc\u666f\u56fe\uff09\n\n\n# \u7248\u672c\u8981\u6c42\n\n* ``Python`` >=  3.8.0\n* ``ultralytics`` >=  8.0.0\n* ``torch`` >=  1.8.0\n* ``onnxruntime``\n* ``onnx``\n\n* Works on Linux, Windows, macOS\n\n\n# \u4f7f\u7528\u65b9\u5f0f\n\n- [HTTP API](https://github.com/chenwei-zhao/captcha-api)\n- Pypi\n\n## HTTP API\n\n\u6587\u6863\u8bf7\u79fb\u6b65: [captcha-api](https://github.com/chenwei-zhao/captcha-api)\n\n## Pypi\n\n### \u4ece Pypi \u5b89\u88c5\n\n\n```bash\npip install captcha-recognizer\n```\n\n\n\n### \u57fa\u4e8e\u5355\u7f3a\u53e3/\u591a\u7f3a\u53e3\u9a8c\u8bc1\u7801\u80cc\u666f\u56fe\u8bc6\u522b\u6ed1\u5757\u7f3a\u53e3\n```Python\n\nfrom captcha_recognizer.recognizer import Recognizer\n\n# source\u4f20\u5165\u56fe\u7247\u8def\u5f84, verbose=False\u8868\u793a\u5173\u95ed\u5197\u4f59\u8f93\u51fa\n# show_result \u4e3aTrue\u5c55\u793a\u8bc6\u522b\u6548\u679c\u56fe (\u751f\u4ea7\u73af\u5883\u8bf7\u8bbe\u7f6eshow_result=False)\n# save \u4e3aTrue\u4fdd\u5b58\u8bc6\u522b\u7ed3\u679c\u56fe \uff08\u751f\u4ea7\u73af\u5883\u8bf7\u8bbe\u7f6esave=False)\nrecognizer = Recognizer()\nbox, confidence = recognizer.identify_gap(source='your_example_image.png', verbose=False)\n\nprint(f'\u7f3a\u53e3\u5750\u6807: {box}')\nprint(f'\u53ef\u4fe1\u5ea6: {confidence}')\n\n\"\"\"\n\u6253\u5370\u7ed3\u679c\u5982\u4e0b:\n\u7f3a\u53e3\u65b9\u6846\u5750\u6807: [331.72052001953125, 55.96122741699219, 422.079345703125, 161.7498779296875]\n\u53ef\u4fe1\u5ea6: 0.9513089656829834\n\n\u5750\u6807\u539f\u70b9\uff1a\u56fe\u7247\u5de6\u4e0a\u89d2\n\u7f3a\u53e3\u65b9\u6846\u5750\u6807\u4e3a\u7f3a\u53e3\u65b9\u6846\u5de6\u4e0a\u89d2\u548c\u53f3\u4e0b\u89d2\u8ddd\u79bb\u5750\u6807\u539f\u70b9\u7684\u8ddd\u79bb\n\"\"\"\n```\n\n### \u57fa\u4e8e\u5355\u7f3a\u53e3/\u591a\u7f3a\u53e3\u9a8c\u8bc1\u7801\u80cc\u666f\u56fe\u8bc6\u522b\u6ed1\u5757\u7f3a\u53e3\u7684\u793a\u4f8b\u56fe\u7247\n\n\u5305\u62ec\u4e14\u4e0d\u9650\u4e8e\u4ee5\u4e0b\u7c7b\u578b\u3001\u5c3a\u5bf8\u7684\u6ed1\u5757\u56fe\u7247\u68c0\u6d4b\n\n\n<p>\u793a\u4f8b\u56fe 1</p>\n<p>\u5c3a\u5bf8 552*344</p>\n<img \n  src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example1.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example1.png\"\n>\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe 1</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict1.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict1.png\"\n>\n\n<p>\u793a\u4f8b\u56fe 2</p>\n<p>\u5c3a\u5bf8 260*160</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example2.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example2.png\"\n>\n\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe 2</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict2.png\"\n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict2.png\"\n>\n\n<p>\u793a\u4f8b\u56fe 3</p>\n<p>\u5c3a\u5bf8 400*200</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example3.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example1.png\"\n>\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe3</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict3.png\"\n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict3.png\"\n>\n\n\n<p>\u793a\u4f8b\u56fe 4</p>\n<p>\u5c3a\u5bf8 672*390</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example4.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example4.png\"\n>\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe4</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict4.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict4.png\"\n>\n\n<p>\u793a\u4f8b\u56fe 5</p>\n<p>\u5c3a\u5bf8 280*155</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example5.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example5.png\"\n>\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe 5</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict5.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict5.png\"\n>\n\n<p>\u793a\u4f8b\u56fe 6</p>\n<p>\u5c3a\u5bf8 590*360</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example6.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example6.png\"\n>\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe 6</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict6.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict6.png\"\n>\n\n<p>\u793a\u4f8b\u56fe 7</p>\n<p>\u5c3a\u5bf8 320*160</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example7.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example7.png\"\n>\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe 7</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict7.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict7.png\"\n>\n\n\n\n### \u57fa\u4e8e\u9a8c\u8bc1\u7801\u622a\u56fe\u7684\u8bc6\u522b\u6ed1\u5757\u7f3a\u53e3\n```Python\n\nfrom captcha_recognizer.recognizer import Recognizer\n\n# source\u4f20\u5165\u56fe\u7247\u8def\u5f84, verbose=False\u8868\u793a\u5173\u95ed\u5197\u4f59\u8f93\u51fa\n# show_result \u4e3aTrue\u5c55\u793a\u8bc6\u522b\u6548\u679c\u56fe (\u751f\u4ea7\u73af\u5883\u8bf7\u8bbe\u7f6eshow_result=False)\n# save \u4e3aTrue\u4fdd\u5b58\u8bc6\u522b\u7ed3\u679c\u56fe \uff08\u751f\u4ea7\u73af\u5883\u8bf7\u8bbe\u7f6esave=False)\nrecognizer = Recognizer()\nbox, confidence = recognizer.identify_gap(source='your_example_image.png', verbose=False)\n\nprint(f'\u7f3a\u53e3\u5750\u6807: {box}')\nprint(f'\u53ef\u4fe1\u5ea6: {confidence}')\n\n\"\"\"\n\u6253\u5370\u7ed3\u679c\u5982\u4e0b:\n\u7f3a\u53e3\u65b9\u6846\u5750\u6807: [331.72052001953125, 55.96122741699219, 422.079345703125, 161.7498779296875]\n\u53ef\u4fe1\u5ea6: 0.9513089656829834\n\n\u5750\u6807\u539f\u70b9\uff1a\u56fe\u7247\u5de6\u4e0a\u89d2\n\u7f3a\u53e3\u65b9\u6846\u5750\u6807\u4e3a\u7f3a\u53e3\u65b9\u6846\u5de6\u4e0a\u89d2\u548c\u53f3\u4e0b\u89d2\u8ddd\u79bb\u5750\u6807\u539f\u70b9\u7684\u8ddd\u79bb\n\"\"\"\n```\n\n### \u57fa\u4e8e\u9a8c\u8bc1\u7801\u622a\u56fe\u7684\u6ed1\u5757\u8bc6\u522b\u6ed1\u5757\u7f3a\u53e3\u793a\u4f8b\n\n\u5305\u62ec\u4e14\u4e0d\u9650\u4e8e\u4ee5\u4e0b\u7c7b\u578b\u3001\u5c3a\u5bf8\u7684\u6ed1\u5757\u9a8c\u8bc1\u7801\u622a\u56fe\n\n\n<p>\u793a\u4f8b\u56fe 8</p>\n<p>\u5c3a\u5bf8 305*156</p>\n<img \n  src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/example8.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/example8.png\"\n>\n<p>\u8bc6\u522b\u6548\u679c\u793a\u4f8b\u56fe 8</p>\n<img src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_predict/predict8.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/predict8.png\"\n>\n\n### \u57fa\u4e8e\u9a8c\u8bc1\u7801\u622a\u56fe\u8bc6\u522b\u6ed1\u5757\u8ddd\u79bb\n\n```python3\nfrom captcha_recognizer.recognizer import Recognizer\n\n# source\u4f20\u5165\u56fe\u7247\u8def\u5f84\u6216\u56fe\u7247\u5bf9\u8c61\n# verbose=False\u8868\u793a\u5173\u95ed\u5197\u4f59\u8f93\u51fa\n# show_result \u4e3aTrue\u5c55\u793a\u8bc6\u522b\u6548\u679c\u56fe (\u751f\u4ea7\u73af\u5883\u8bf7\u8bbe\u7f6eshow_result=False)\n# save \u4e3aTrue\u4fdd\u5b58\u8bc6\u522b\u7ed3\u679c\u56fe \uff08\u751f\u4ea7\u73af\u5883\u8bf7\u8bbe\u7f6esave=False)\nrecognizer = Recognizer()\ndistance = recognizer.identify_distance_by_screenshot(source='your_screenshot.jpg')\n\nprint('\u6ed1\u5757\u8ddd\u79bb', distance)\n```\n\n\n\n# \u6ce8\u610f\u4e8b\u9879\n## \u504f\u79fb\u91cf\n\u67d0\u4e9b\u79cd\u7c7b\u7684\u6ed1\u5757\u9a8c\u8bc1\u7801\uff0c\u6ed1\u5757\u521d\u59cb\u4f4d\u7f6e\u5b58\u5728\u4e00\u5b9a\u504f\u79fb\uff0c\u4ee5\u4e0b\u9762\u56fe\u4e2d\u7684\u6ed1\u5757\u521d\u59cb\u4f4d\u7f6e\u4e3a\u4f8b\uff1a\n\n<p>\u793a\u4f8b\u56fe 9</p>\n<img \n  src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/offset2.png\"\n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/offset2.png\"\n>\n\n\n\n\u5982\u793a\u4f8b\u56fe9\u4e2d\uff1a\n- \u7b2c\u4e00\u6761\u9ed1\u7ebf\u4f4d\u7f6e\u4e3a\u6ed1\u5757\u521d\u59cb\u4f4d\u7f6e\uff0c\u8ddd\u79bb\u56fe\u7247\u8fb9\u6846\u6709\u5927\u6982\u67098\u4e2a\u50cf\u7d20\u7684\u504f\u79fb\u91cf\uff08offset\u4e3a8\uff09\n- \u8bc6\u522b\u7ed3\u679c\u7684\u7f3a\u53e3\u5750\u6807\u4e3a [x1, y1, x2, y2] \u5bf9\u5e94\u7f3a\u53e3\u7684\u5de6\u4e0a\u89d2\u548c\u53f3\u4e0b\u89d2\u5750\u6807\uff08\u5750\u6807\u539f\u70b9\u4e3a\u56fe\u7247\u5de6\u4e0a\u89d2\uff09\n- \u7b2c\u4e8c\u6761\u9ed1\u7ebf\u7684X\u8f74\u5750\u6807\u503c\u5bf9\u5e94\u7f3a\u53e3\u8bc6\u522b\u7ed3\u679c\u5de6\u4e0a\u89d2\u7684X\u8f74\u5750\u6807\u503c\uff0c\u6b64\u5904\u503c\u4e3a154\uff08x1\u4e3a154\uff09\n- \u56e0\u6b64\u5b9e\u9645\u6ed1\u5757\u7684\u8ddd\u79bb\u4e3a x1-offset (154-8=146)\n- \u4e5f\u5c31\u662f\u8bf4\uff0c\u5b9e\u9645\u7684\u6ed1\u5757\u8ddd\u79bb\u4e3a\u7f3a\u53e3\u7684x1\u503c\u51cf\u53bb\u6ed1\u5757\u8ddd\u79bb\u56fe\u7247\u8fb9\u6846\u7684\u504f\u79fb\u91cf(offset)\n\n## \u56fe\u7247\u7f29\u653e\n\u67d0\u4e9b\u9a8c\u8bc1\u7801\uff0c\u524d\u7aef\u6e32\u67d3\u65f6\u4f1a\u5bf9\u56fe\u7247\u8fdb\u884c\u7f29\u653e\uff0c\u56e0\u6b64\u5b9e\u9645\u7684\u6ed1\u5757\u8ddd\u79bb\u4e5f\u8981\u6309\u7167\u56fe\u7247\u7f29\u653e\u6bd4\u4f8b\u8fdb\u884c\u8ba1\u7b97\u3002\n\n<p>\u793a\u4f8b\u56fe 10</p>\n<img \n  src=\"https://raw.githubusercontent.com/chenwei-zhao/captcha-recognizer/main/images_example/rendered_size.png\" \n  alt=\"https://captcha-slider.oss-cn-beijing.aliyuncs.com/slider/rendered_size.png\"\n>\n\n\n## \u56fe\u7247\u8bc6\u522b\u8017\u65f6\n- \u9996\u6b21\u8bc6\u522b\u56fe\u7247\u8017\u65f6\u8f83\u957f\uff082s\u5de6\u53f3\uff09\uff1b\n- \u540e\u7eed\u5355\u5f20\u56fe\u7247\u7684\u8bc6\u522b\u572860ms\uff0860\u6beb\u79d2\uff09\u5de6\u53f3\uff1b\n- \u56e0\u4e3a\u9996\u6b21\u8bc6\u522b\u56fe\u7247\u65f6\u9700\u8981\u5c06\u6a21\u578b\u4ece\u78c1\u76d8\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\uff0c\u5e76\u8fdb\u884c\u4e00\u7cfb\u5217\u7684\u521d\u59cb\u5316\u5de5\u4f5c\uff0c\u5982\u6743\u91cd\u52a0\u8f7d\u3001\u5185\u5b58\u5206\u914d\u7b49\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u76f8\u5bf9\u8017\u65f6\uff1b\n- \u4e00\u65e6\u6a21\u578b\u52a0\u8f7d\u5b8c\u6210\u5e76\u521d\u59cb\u5316\u597d\uff0c\u540e\u7eed\u7684\u56fe\u7247\u9884\u6d4b\u5c31\u53ef\u4ee5\u76f4\u63a5\u5229\u7528\u5df2\u7ecf\u52a0\u8f7d\u597d\u7684\u6a21\u578b\u548c\u5206\u914d\u597d\u7684\u8d44\u6e90\uff0c\u4ece\u800c\u907f\u514d\u4e86\u91cd\u590d\u52a0\u8f7d\u548c\u521d\u59cb\u5316\u7684\u5f00\u9500\u3002\n\n\n\n# \u5b89\u88c5\u8fc7\u7a0b\u4e2d\u9047\u5230\u95ee\u9898\n- Error loading \u201cxxx\\Lib\\site-packages\\torch\\lib\\fbgemm.dll\u201d or one of its dependencies.\n  - \u53c2\u8003 [Issues 2](https://github.com/chenwei-zhao/captcha-recognizer/issues/2)\n- Model Unsupported model IR version: 9, max supported IR version: 8\n    - \u53c2\u8003 [Issues 1](https://github.com/chenwei-zhao/captcha-recognizer/issues/1)\n    \n\n\n# \u9879\u76ee\u7ef4\u62a4\n\n- \u5982\u679c\u4f60\u5bf9\u672c\u9879\u76ee\u611f\u5174\u8da3\uff0c\u6b22\u8fcestar\u3002\n- \u9879\u76ee\u957f\u671f\u7ef4\u62a4\u3002\n- \u5982\u679c\u4f60\u9047\u5230\u672c\u9879\u76ee\u4e0d\u80fd\u8bc6\u522b\u7684\u6ed1\u5757\u9a8c\u8bc1\u7801\uff0c\u6b22\u8fce\u63d0[issue](https://github.com/chenwei-zhao/captcha-recognizer/issues)\u3002\n- \u6709\u4efb\u4f55\u95ee\u9898\uff0c\u6b22\u8fce\u63d0[issue](https://github.com/chenwei-zhao/captcha-recognizer/issues)\u3002\n\n# \u66f4\u591a\u8054\u7cfb\u65b9\u5f0f\n- Gmail: chenwei.zhaozhao@gmail.com\n- 163/\u7f51\u6613: chenwei_nature@163.com\n\n\n# \u514d\u8d23\u58f0\u660e\n\u672c\u9879\u76ee\u4e0d\u9488\u5bf9\u4efb\u4f55\u4e00\u5bb6\u9a8c\u8bc1\u7801\u5382\u5546\uff0c\u9879\u76ee\u6240\u6709\u5185\u5bb9\u4ec5\u4f9b\u5b66\u4e60\u4ea4\u6d41\u4f7f\u7528\uff0c\u4e0d\u7528\u4e8e\u5176\u4ed6\u4efb\u4f55\u76ee\u7684\uff0c\u4e25\u7981\u7528\u4e8e\u975e\u6cd5\u7528\u9014\u3002\n\n# \u8bb8\u53ef\u8bc1\nMIT license\n\n# \u611f\u8c22\u4f60\u7684\u652f\u6301\n\n## Stargazers\n\n[![Stargazers repo roster for @chenwei-zhao/captcha-recognizer](https://reporoster.com/stars/dark/chenwei-zhao/captcha-recognizer)](https://github.com/chenwei-zhao/captcha-recognizer/stargazers)\n\n## Forkers\n[![Forkers repo roster for @chenwei-zhao/captcha-recognizer](https://reporoster.com/forks/dark/chenwei-zhao/captcha-recognizer)](https://github.com/chenwei-zhao/captcha-recognizer/network/members)\n\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=chenwei-zhao/captcha-recognizer&type=Date)](https://star-history.com/#chenwei-zhao/captcha-recognizer&Date)\n\n# \u7248\u672c\u5386\u53f2\n\n0.7.0 (2025-02-12)\n* \u4f18\u5316\u6ed1\u5757\u622a\u56fe\u7684\u8bc6\u522b\u903b\u8f91 (Optimize the logic of sliding block screenshot recognition)\n\n0.6.0 (2024-11-13)\n* \u589e\u5f3a\u6a21\u578b\u6cdb\u5316\u80fd\u529b (Enhance model generalization)\n\n0.5.0 (2024-11-06)\n* \u65b0\u589e\u529f\u80fd\uff1a\u57fa\u4e8e\u9a8c\u8bc1\u7801\u622a\u56fe\u8bc6\u522b\u6ed1\u5757\u8ddd\u79bb (Added support for recognizing the distance of the sliding block in screenshot)\n\n0.4.0 (2024-10-10)\n* \u589e\u5f3a\u6a21\u578b\u6cdb\u5316\u80fd\u529b (Enhance model generalization)\n\n0.3.3 (2024-09-29)\n* \u6dfb\u52a0HTTP API\u6587\u6863\u94fe\u63a5 (Add HTTP API docs link)\n\n0.3.2 (2024-09-24)\n* \u4fee\u590d\u56fe\u7247\u94fe\u63a5\u9519\u8bef (Fix image link)\n\n0.3.1 (2024-09-24)\n* \u6dfb\u52a0\u4e00\u4e9b\u6ce8\u610f\u4e8b\u9879 (Add some notes)\n* \n0.3.0 (2024-09-23)\n* \u652f\u6301\u622a\u56fe\u7c7b\u578b\u7684\u9a8c\u8bc1\u7801\u8bc6\u522b (Screenshot support)\n\n0.2.1 (2024-09-10)\n* Fix example image link\n\n0.2.0 (2024-09-10)\n* Improve the captcha compatibility of the library\n\n0.1.6 (2024-09-06)\n* Update README\n\n0.1.5 (2024-09-06)\n* Compress sample picture\n\n0.1.4 (2024-08-30)\n* Handle the case where the result is empty\n* Split workflow to two jobs\n\n0.1.3 (2024-08-26)\n\n* Optimize example image css in README\n\n0.1.2 (2024-08-26)\n\n* Update example image url in README\n\n0.1.1 (2024-08-26)\n\n* Update README\n\n0.1.0 (2024-08-23)\n\n* First release.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u6ed1\u5757\u9a8c\u8bc1\u7801\u8bc6\u522b\uff0c\u57fa\u4e8eYOLOv8\u8bad\u7ec3\uff0c\u652f\u6301\u5355\u7f3a\u53e3\u3001\u591a\u7f3a\u53e3\u3001\u622a\u56fe\u8bc6\u522b",
    "version": "0.7.0",
    "project_urls": {
        "Homepage": "https://github.com/chenwei-zhao/captcha-recognizer"
    },
    "split_keywords": [
        "captcha",
        " slider",
        " captcha-recognizer",
        " captcha_recognizer",
        " \u6ed1\u5757",
        " \u6ed1\u5757\u9a8c\u8bc1\u7801",
        " \u6ed1\u5757\u8bc6\u522b"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7937348125271d4bd2d74b2f8e51293b823a3bb418e8799b093c55f0e3872fd7",
                "md5": "bdae3c23f31009aa5d80c31a52fcab18",
                "sha256": "aa59e7647f4a3ea51ffffa0b699cd652d649790f0cd7a5dbd77e011b6997dd11"
            },
            "downloads": -1,
            "filename": "captcha_recognizer-0.7.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bdae3c23f31009aa5d80c31a52fcab18",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 75562086,
            "upload_time": "2025-02-12T06:58:02",
            "upload_time_iso_8601": "2025-02-12T06:58:02.110851Z",
            "url": "https://files.pythonhosted.org/packages/79/37/348125271d4bd2d74b2f8e51293b823a3bb418e8799b093c55f0e3872fd7/captcha_recognizer-0.7.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "34bdf4358c2963c76e47d028a9fc37eaa330235013a76ccf25a4a6985d3ee354",
                "md5": "8fae09df4f39de3c2fc584037b549005",
                "sha256": "668d22800fa9fdb82553f6d9cc0ab0865421f479254ac1c9162f4850b6e26c44"
            },
            "downloads": -1,
            "filename": "captcha_recognizer-0.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "8fae09df4f39de3c2fc584037b549005",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 75565426,
            "upload_time": "2025-02-12T06:58:14",
            "upload_time_iso_8601": "2025-02-12T06:58:14.401093Z",
            "url": "https://files.pythonhosted.org/packages/34/bd/f4358c2963c76e47d028a9fc37eaa330235013a76ccf25a4a6985d3ee354/captcha_recognizer-0.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-12 06:58:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "chenwei-zhao",
    "github_project": "captcha-recognizer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "ultralytics",
            "specs": [
                [
                    ">=",
                    "8.0.0"
                ]
            ]
        },
        {
            "name": "onnxruntime",
            "specs": []
        },
        {
            "name": "onnx",
            "specs": []
        }
    ],
    "lcname": "captcha-recognizer"
}
        
Elapsed time: 2.73112s