Skip to content

Instantly share code, notes, and snippets.

@christianroman
Created May 30, 2013 16:02
Show Gist options
  • Save christianroman/5679049 to your computer and use it in GitHub Desktop.
Save christianroman/5679049 to your computer and use it in GitHub Desktop.
Bypass Captcha using 10 lines of code with Python, OpenCV & Tesseract OCR engine
import cv2.cv as cv
import tesseract
gray = cv.LoadImage('captcha.jpeg', cv.CV_LOAD_IMAGE_GRAYSCALE)
cv.Threshold(gray, gray, 231, 255, cv.CV_THRESH_BINARY)
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyz")
api.SetPageSegMode(tesseract.PSM_SINGLE_WORD)
tesseract.SetCvImage(gray,api)
print api.GetUTF8Text()
@0xpeanutbutter
Copy link

Please paste your requirements.txt.
I have installed

sudo apt-get install libopencv-dev python-opencv
pip install cv2

But I still get an error saying

ImportError: No module named cv2

use
pip install opencv-python
to install cv2

@tradigrada1
Copy link

tradigrada1 commented Jan 22, 2021 via email

@haltcompiler
Copy link

hello,
how do we solve this to TEXT

data:image/png;base64,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

try this in python3

import base64
data = "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"
imgdata = base64.b64decode(data)
filename = 'some_image.jpg'
with open(filename, 'wb') as f:
f.write(imgdata)

@lol-1-afk
Copy link

image
this?

@anhtuan0030
Copy link

@forum2k9 I solved the first one with convert and Tesseract:

$ convert ofdbmf.jpg -colorspace Gray -blur 0 -level 0,60% ofdbmf-1.jpg
$ tesseract -psm 8 ofdbmf-1.jpg -
OFDBMF

I posted the details at https://mathieularose.com/decoding-captchas

Olá, alguma sugestão de texto cruzado por várias linhas curvas com o mesmo peso?
download-3
download-4
download-6
download-7
download-2
download-5

Have you made any progress? I have this same captcha.

Hello sir, do you resolve this? can you share with us pls?

@forum2k9 can you help us too?

Thanks!

@neodouglas
Copy link

how i can solve that?
007444
002952
002963
004058
004967
005589

@AlexanderMortimer
Copy link

it is not working for my captcha @jtanori
1

@DiMiTriFrog
Copy link

it is not working for my captcha @jtanori
1

Any solutions nowadays?

@NotTrueFalse
Copy link

2jB4
6mKp
ByLt
HZj0
kumd
mVVZ
NJJ6
NW3K
tEvz
x1CP

Hi,
I want solve a Captcha similar yours.
Did you solve it?
i will appreciate if you help me .

@AlexanderMortimer
Copy link

AlexanderMortimer commented Jan 27, 2024 via email

@NotTrueFalse
Copy link

I was joking, I'm actually making a model to solve them, don't worry

@AlexanderMortimer
Copy link

AlexanderMortimer commented Jan 27, 2024 via email

@NotTrueFalse
Copy link

It's done, but it work only with the type of captcha I posted here, If you want me to make a model for your type of captcha, I need a dataset with at least 10k captcha.
If you don't have it, send me an image, I'll find how to gen a lot of captcha, make a model then tell you how to use it.
contact info : enderty on discord

@NotTrueFalse
Copy link

NotTrueFalse commented Jan 28, 2024

Sounds good. Please let me now whener it completed

https://github.com/NotTrueFalse/Captcha_solving/

@ytrezq
Copy link

ytrezq commented Feb 1, 2024

It's done, but it work only with the type of captcha I posted here, If you want me to make a model for your type of captcha, I need a dataset with at least 10k captcha. If you don't have it, send me an image, I'll find how to gen a lot of captcha, make a model then tell you how to use it. contact info : enderty on discord

@NotTrueFalse hey : those kind of captchas are automatically generated by https://captcha.com/java-captcha.html. You could get millions of such annotated captchas.

@NotTrueFalse
Copy link

Thank you, I'll make another branch so you can generate another type or captcha, I'll have to update the pre-processing part though but it should be fine.

@ytrezq
Copy link

ytrezq commented Feb 1, 2024

@NotTrueFalse my intent wasn t generating the dataset myself.

@NotTrueFalse
Copy link

You want me to do all the step to create the model? At this point I could just create a website and make a cheap api for people

@ytrezq
Copy link

ytrezq commented Feb 1, 2024

@NotTrueFalse I lack the knowledge to train an ai and I m bad at advanced databases scenarios.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment