Skip to content

Instantly share code, notes, and snippets.

@MrAch26
Created December 4, 2022 08:36
Show Gist options
  • Save MrAch26/5e2aa7e73b508f8ba9133d468efa4348 to your computer and use it in GitHub Desktop.
Save MrAch26/5e2aa7e73b508f8ba9133d468efa4348 to your computer and use it in GitHub Desktop.
Captcha Solver with python
from PIL import Image
from scipy.ndimage import gaussian_filter
import numpy
import pytesseract
from PIL import ImageFilter
def solve_captcha(filename):
# thresold1 on the first stage
th1 = 140
th2 = 140 # threshold after blurring
sig = 1.5 # the blurring sigma
from scipy import ndimage
original = Image.open(filename)
original.save("original.png") # reading the image from the request
black_and_white = original.convert("L") # converting to black and white
black_and_white.save("black_and_white.png")
first_threshold = black_and_white.point(lambda p: p > th1 and 255)
first_threshold.save("first_threshold.png")
blur = numpy.array(first_threshold) # create an image array
blurred = gaussian_filter(blur, sigma=sig)
blurred = Image.fromarray(blurred)
blurred.save("blurred.png")
final = blurred.point(lambda p: p > th2 and 255)
final = final.filter(ImageFilter.EDGE_ENHANCE_MORE)
final = final.filter(ImageFilter.SHARPEN)
final.save("final.png")
number = pytesseract.image_to_string(Image.open('final.png'), lang='eng',
config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789').strip()
print("RESULT OF CAPTCHA:")
print(number)
print("===================")
return number
@MrAch26
Copy link
Author

MrAch26 commented Dec 19, 2023

@arunpurshotam
That’s because you have a setting on line 29 that specifically says : tessedit_char_whitelist=[0123456789](tel:0123456789)') you should change or remove that

@AbdulMobinFata
Copy link

captcha
i have this image how i can extrect

@MrAch26
Copy link
Author

MrAch26 commented Dec 22, 2023

@AbdulMobinFata
Change line 29 to this :
result = pytesseract.image_to_string(Image.open('final.png'), lang='eng', config='--psm 10 --oem 3')

@AbdulMobinFata
Copy link

result = pytesseract.image_to_string(Image.open('final.png'), lang='eng', config='--psm 10 --oem 3' but it does not work
final
as final png is like this

@yogeshkp
Copy link

yogeshkp commented Dec 26, 2023

captcha

the final result is "pereud" for this image,can you help on this.

@Manedi
Copy link

Manedi commented Apr 24, 2024

Telerik Web UI WebResource axd-2

Didn't work for attached image, the result was "5867" for this imagen, can you help on this?

@MikeyD-rbg
Copy link

How do I use my own captcha to test this?

@MikeyD-rbg
Copy link

captcha

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