Skip to content

Instantly share code, notes, and snippets.

@MrAch26
Created December 4, 2022 08:36
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • 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
@arunpurshotam
Copy link

Didn't work for attached image
image

@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?

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