Skip to content

AntiCAP 入门指南 ​

AntiCAP 是一个强大的验证码识别解决方案,支持多种验证码类型的识别,旨在帮助开发者快速集成验证码识别功能。

🧑‍⚖️ 免责声明 ​

AntiCAP 仅供学习和研究使用,请勿用于非法用途。使用本工具所产生的一切后果由使用者自行承担。

🚀 快速开始 ​

安装 ​

AntiCAP 支持通过 pip 直接安装:

bash
pip install anticap

基础使用 ​

所有功能均通过 AntiCAP.Handler 进行调用。

python
import AntiCAP

# 初始化 Handler (show_banner=True 会显示启动横幅)
Atc = AntiCAP.Handler(show_banner=True)

📚 功能示例 ​

1. 通用 OCR 识别 ​

适用于识别数字、大小写字母、汉字等常规文本验证码。

参考例图OCR Example

python
import base64
import AntiCAP

# 读取图片并转为 Base64
with open("captcha.jpg", "rb") as img_file:
    img_base64 = base64.b64encode(img_file.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.OCR(img_base64=img_base64) # 传入图片Base64编码字符串

print(result) # 返回识别字符串,例如: jepy

2. 算术验证码识别 ​

适用于加减乘除等算术题验证码,直接返回计算结果。

参考例图Math Example

python
import base64
import AntiCAP

with open("captcha.jpg", "rb") as img_file:
    img_base64 = base64.b64encode(img_file.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Math(img_base64=img_base64)

print(result) # 返回计算结果,例如: 8

3. 图标侦测 ​

检测图片中的图标位置,返回图标类别和坐标框。

参考例图Icon Detection Example

python
import base64
import AntiCAP

with open("captcha.jpg", "rb") as img_file:
    img_base64 = base64.b64encode(img_file.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Detection_Icon(img_base64=img_base64)

print(result)
# 返回示例: [{'class': 'icon', 'box': [9.12, 105.4, 111.73, 223.02]}...]
# box 格式: [x1, y1, x2, y2] (左上角和右下角坐标)

4. 文字侦测 ​

检测图片中的文字位置,返回文字类别和坐标框。

参考例图Text Detection Example

python
import base64
import AntiCAP

with open("captcha.jpg", "rb") as img_file:
    img_base64 = base64.b64encode(img_file.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Detection_Text(img_base64=img_base64)

print(result)
# 返回示例: [{'class': 'Text', 'box': [145.71, 19.21, 223.99, 95.7]}...]

5. 图标点选类 ​

根据提示图(Order Image)在目标图(Target Image)中按顺序找出对应图标。

提示图Icon Order Hint

目标图片Icon Order Target

python
import base64
import AntiCAP

with open("order_image.jpg", "rb") as f:
    order_img_base64 = base64.b64encode(f.read()).decode('utf-8')

with open("target_image.jpg", "rb") as f:
    target_img_base64 = base64.b64encode(f.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.ClickIcon_Order(
    order_img_base64=order_img_base64,
    target_img_base64=target_img_base64
)

print(result)

6. 文字点选类 ​

根据提示图(Order Image)在目标图(Target Image)中按顺序找出对应文字。

提示图Text Order Hint

目标图片Text Order Target

python
import base64
import AntiCAP

with open("order_image.jpg", "rb") as f:
    order_img_base64 = base64.b64encode(f.read()).decode('utf-8')

with open("target_image.jpg", "rb") as f:
    target_img_base64 = base64.b64encode(f.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.ClickText_Order(
    order_img_base64=order_img_base64,
    target_img_base64=target_img_base64
)

print(result)

7. 缺口滑块类 ​

识别滑块缺口的位置。

缺口图Slider Piece

背景图Slider Background

python
import base64
import AntiCAP

# 读取滑块图片(小块)
with open("slider.png", "rb") as f:
    target_base64 = base64.b64encode(f.read()).decode('utf-8')

# 读取背景图片(带缺口的大图)
with open("background.jpg", "rb") as f:
    background_base64 = base64.b64encode(f.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Slider_Match(
    target_base64=target_base64,
    background_base64=background_base64
)

print(result)

8. 阴影滑块类 ​

识别背景图中阴影滑块的位置。

目标图片 (滑块) Shadow Slider Target

背景图片Shadow Slider Background

python
import base64
import AntiCAP

with open("target.jpg", "rb") as f:
    target_base64 = base64.b64encode(f.read()).decode('utf-8')

with open("background.jpg", "rb") as f:
    background_base64 = base64.b64encode(f.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Slider_Match(
    target_base64=target_base64,
    background_base64=background_base64
)

print(result)

9. 相似度对比 ​

比较两张图片的相似度。

图片1Sim 1

图片2Sim 2

python
import base64
import AntiCAP

with open("image1.jpg", "rb") as f:
    image1_base64 = base64.b64encode(f.read()).decode('utf-8')

with open("image2.jpg", "rb") as f:
    image2_base64 = base64.b64encode(f.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Compare_Image_Similarity(
    image1_base64=image1_base64, 
    image2_base64=image2_base64
)

print("相似度结果:", result)

10. 双图旋转类验证码 ​

识别内圈和外圈的旋转角度,使它们拼合。

内圈Inner Rotate

外圈Outer Rotate

python
import base64
import AntiCAP

with open("inside.jpg", "rb") as f:
    inside_base64 = base64.b64encode(f.read()).decode('utf-8')

with open("outside.jpg", "rb") as f:
    outside_base64 = base64.b64encode(f.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result= Atc.Double_Rotate(
    inside_base64=inside_base64, 
    outside_base64=outside_base64
)

print(result)
# 返回示例: {'similarity': 0.665, 'inner_angle': 75.5, 'raw_angle': 151}

11. 单图旋转类验证码 ​

识别单张图片需要旋转的角度以恢复正常显示。

图片Single Rotate

python
import base64
import AntiCAP

with open("rotate_image.jpg", "rb") as f:
    rotate_base64 = base64.b64encode(f.read()).decode('utf-8')

Atc = AntiCAP.Handler(show_banner=True)
result= Atc.Single_Rotate(image_base64=rotate_base64)

print(result)
# 返回旋转角度,例如: 229

🧬 自定义模型 ​

AntiCAP 的核心函数均支持加载自定义模型(如 .pt 格式的 YOLO 模型或 .onnx 格式的模型)。

python
import AntiCAP

Atc = AntiCAP.Handler(show_banner=True)

# 1. 算术验证码自定义模型
result = Atc.Math(
    img_base64="",
    math_model_path=r"C:\AntiCAP\model\your_math_model.pt"
)

# 2. 图标侦测自定义模型
result = Atc.Detection_Icon(
    img_base64="",
    detectionIcon_model_path=r"C:\AntiCAP\model\your_detectionIcon_model.pt"
)

# 3. 文字侦测自定义模型
result = Atc.Detection_Text(
    img_base64="",
    detectionText_model_path=r"C:\AntiCAP\model\your_detectionText_model.pt"
)

# 4. 文字点选自定义模型
result = Atc.ClickText_Order(
    order_img_base64="",
    target_img_base64="",
    detectionText_model_path=r"C:\AntiCAP\model\your_detectionText_model.pt",
    sim_onnx_model_path=r"C:\AntiCAP\model\your_sim_onnx_model.onnx"
) 

# 5. 图标点选自定义模型
result = Atc.ClickIcon_Order(
    order_img_base64="",
    target_img_base64="",
    detectionIcon_model_path=r"C:\AntiCAP\model\your_detectionIcon_model.pt",
    sim_onnx_model_path=r"C:\AntiCAP\model\your_sim_onnx_model.onnx"
) 

# 6. 相似度对比自定义模型
result = Atc.Compare_Image_Similarity(
    image1_base64="",
    image2_base64="",
    sim_onnx_model_path=r"C:\AntiCAP\model\your_sim_onnx_model.onnx"
)

# 7. 单图旋转自定义模型
result = Atc.Single_Rotate(
    image_base64="",
    rotate_onnx_modex_path=r"C:\AntiCAP\model\your_rotate_onnx_model.onnx"
)