Skip to content

InnoSoft-Company/InnoCaptcha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InnoCaptcha

PyPI Version Python Versions PyPI Status License: MIT GitHub last commit PyPI Downloads Total Downloads GitHub stars Visitors

A pluggable Python CAPTCHA library supporting image-based text challenges, arithmetic challenges, token-based security, and multiple storage backends.

PyPI · GitHub · Issues · Discussions


Table of Contents


Installation

pip install InnoCaptcha

Quick Start

1. Text CAPTCHA

Generates an image-based CAPTCHA with configurable text, colors, and dimensions. All images include random distortions and anti-aliasing.

from InnoCaptcha.text import TextCaptcha

# Basic usage
captcha = TextCaptcha()
captcha.create("abs")
print(captcha.verify("abs"))    # True
captcha.save(r"captcha.png")

# Custom dimensions and colors
captcha = TextCaptcha(
    width=350,
    height=100,
    color=(255, 137, 6),
    background=(15, 14, 23)
)
captcha.create("abc123")
print(captcha.verify("wrong"))  # False
captcha.save(r"captcha.jpg")

Constructor Parameters

Parameter Type Default Description
width int or None 300 Image width in pixels.
height int or None 80 Image height in pixels.
color tuple[int, int, int] (0, 0, 0) Foreground (text) color in RGB.
background tuple[int, int, int] (255, 255, 255) Background color in RGB.

create(chars: str) — The text string to render in the CAPTCHA image. Required.

save() Parameters

Parameter Type Default Description
path str 'captcha.png' Full file path or file name to write the image.

Notes:

  • Uses secrets for cryptographically strong randomness.
  • Rendering can be tuned via module-level constants such as CHARACTER_OFFSET_DX and WORD_SPACE_PROBABILITY.

2. Math CAPTCHA

Generates arithmetic challenges (addition, subtraction, multiplication, division). All results are integers — the problem regenerates automatically if division would produce a fraction.

from InnoCaptcha.math import MathCaptcha

challenge = MathCaptcha()
print(challenge.get_question())  # e.g., "7 + 3 = ?"
print(challenge.answer)          # e.g., 10

print(challenge.verify(10))      # True
print(challenge.verify("10"))    # True — string input accepted

3. Command-Line Interface

# Display the installed version
InnoCaptcha --version

# Upgrade to the latest release on PyPI
InnoCaptcha --upgrade

API Reference

TextCaptcha

Method / Attribute Description
create(chars: str) Renders the given string into a distorted CAPTCHA image.
verify(input: str) Returns True if input matches the generated text.
save(path) Writes the image to the specified file path.

MathCaptcha

Method / Attribute Description
get_question() -> str Returns the challenge string, e.g. "7 + 3 = ?".
answer: int The correct integer answer to the current challenge.
verify(input) -> bool Returns True if input equals the answer.

Requirements

  • Python 3.9 or later
  • Pillow >= 10.0.0

License

MIT — InnoSoft Company

About

A professional, pluggable CAPTCHA library with image, math, and custom challenge types, token-based security, and multiple storage backends.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages