Skip to main content

Lightweight Library for Slide Puzzle Captcha Solving

Project description

No-Puzzle-Captcha

Lightweight Library for Slide Puzzle Captcha Solving
轻量级的滑动拼图验证码自动识别库

PyPI - Version PyPI - Downloads

Introduction

This Python library is designed to solve puzzle CAPTCHAs (aka slide CAPTCHAs), using OpenCV to achieve high inference speed with low computational cost.

Features

  • Fast : Average processing time is less than 5ms.
  • Lightweight : CPU-friendly. No neural network.
  • Minimal-Dependency : The only direct dependency is opencv-python.
  • Well-Designed : Follows best practices such as type annotations.

Get Started

Installation

Install from PyPI:

pip install no_puzzle_captcha

Minimal Example

Firstly, prepare an background image (the original image) and a puzzle image (the slider image).

You only need 4 lines of code to solve a puzzle CAPTCHA:

from no_puzzle_captcha import PuzzleCaptchaSolver

solver = PuzzleCaptchaSolver()

result = solver.handle_file("background.png", "puzzle.png")

print(f"Matched at ({result.x}, {result.y})")

Usage

Solver Class

All the following methods in the class PuzzleCaptchaSolver returns a PuzzleCaptchaResult object:

  • Method handle_file: Accepts two file path parameters (one for background image and another for puzzle image).
  • Method handle_bytes: Accepts two bytes-like parameters that store the image data.
  • Method handle_image: Accepts two matrix-like parameters that store the pixel data of the image.

Result Class

You can get the recognition result via the class PuzzleCaptchaResult:

  • Property x and y: The top-left coordinates of the detected result.

You can also visualize the result.

  • Method visualize: Returns a matrix-like object representing the visualized image.
  • Method visualize_and_show: Shows the visualized image via OpenCV's window.
  • Method visualize_and_save: Saves the visualized image to a specified path.

Advanced Usage

The constructor of the class PuzzleCaptchaSolver accepts an optional transforms argument, allowing you to customize the image transformation process.

Benchmark

The following test results are based on version 1.1.1. The elapsed time may vary depending on the device. You can run test.py to reproduce these tests.

GeeTest Test

This test uses the standard samples from GeeTest, each contains exactly one hollow in the background image.

Sample:

Background Image Puzzle Image

Result:

Item Value
Test Cases 115 items
Elapsed Time (All) 0.004 s/item
Elapsed Time (Infer) 0.002 s/item
Accuracy 90.4% (104 correct, 11 wrong)

Tricky Test

This test uses the samples with multiple hollow for misleading purpose, so we call it "tricky".

Sample:

Background Image Puzzle Image

Result:

Item Value
Test Cases 100 items
Elapsed Time (All) 0.003 s/item
Elapsed Time (Infer) 0.002 s/item
Accuracy 99.0% (99 correct, 1 wrong)

Tricky Hard Test

This test uses the samples with multiple hollow, but they are more difficult to recognize.

Sample:

Background Image Puzzle Image

Result:

Item Value
Test Cases 190 items
Elapsed Time (All) 0.003 s/item
Elapsed Time (Infer) 0.002 s/item
Accuracy 90.5% (172 correct, 18 wrong)

Credits

Licensing

This project is licensed under the MIT License. See the License file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

no_puzzle_captcha-1.1.1.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

no_puzzle_captcha-1.1.1-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file no_puzzle_captcha-1.1.1.tar.gz.

File metadata

  • Download URL: no_puzzle_captcha-1.1.1.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.12.9 Windows/11

File hashes

Hashes for no_puzzle_captcha-1.1.1.tar.gz
Algorithm Hash digest
SHA256 dbdeb017ac6c7fea344f0b217090d1313639cbcfe8567649778c85b90cb045e9
MD5 164e95a4b9fbc8b0c8263303b44ad9c5
BLAKE2b-256 69f995a1b750027edf8f4f71699647dccb32d00bab378cd020235041b331dd24

See more details on using hashes here.

File details

Details for the file no_puzzle_captcha-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: no_puzzle_captcha-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.12.9 Windows/11

File hashes

Hashes for no_puzzle_captcha-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d44d69daef137f05b711304ce03011778d45553a62e6186e26c60e36e0bc197f
MD5 7cbf1c24f3aee58d394e29e877ea2763
BLAKE2b-256 02d13ef6809c36d5fc741bda56cc21fb0be0a426b7ec5ec27f207f68eb11c126

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page