Sử dụng ML/DL để giải bài toán captcha

deep-learning
machine-learning

#1

Các bác cho em hỏi là muốn giải quyết được bài toán captcha nên bắt đầu từ đâu ạ? Em cũng có đọc qua bài viết này nhưng em chưa hình dung được là làm sao để tạo ra được model để train


#2

Ta có thể xây dựng một model captcha end2end, nghĩa là chỉ cần 1 model nhận input là ảnh captcha và output trực tiếp ra kết quả là chuỗi kí tự. Tuy nhiên, trong tutorial này, tác giả hướng dẫn chia nhỏ bài toán giúp tiếp cận dễ dàng hơn.

Tutorial này tóm gọn lại trong 3 bước

  1. Tạo dữ liệu: Bao gồm các ảnh captcha và Label của ảnh, ví dụ ảnh captcha và nhãn ‘2M8M’
  2. Xây dựng model tách chữ trong captcha: Phần này có thể dùng các thuật toán xử lý ảnh như tìm Contours, kết hợp với rule về kích thước chữ cái (phát hiện chữ nào tỉ lệ width/height lớn, do 2 chữ dính vào nhau, thì chia nhỏ ra). Hoặc bạn có thể nghiên cứu các model deep learning nâng cao hơn để giải quyết việc này.
  3. Xây dựng model phân loại ảnh thành từng chữ cái (A-Z, 0-9): Dữ liệu khá đơn giản nên ta có thể chỉ cần dùng một mạng CNN nhỏ như AlexNet.

Kết hợp lại, khi đưa một ảnh captcha (‘2M8M’) gồm nhiều chữ cái, model đầu tiên sẽ tách chữ các vùng nhỏ mà gôm từng chữ cái riêng lẻ (ảnh có chữ ‘2’, ảnh có chữ ‘M’, …), model tiếp theo (CNN) sẽ phân loại từng ảnh nhỏ tách được thành từng chữ cái (‘2’, ‘M’, ‘8’, ‘M’). Cuối cùng ta sẽ tổng hợp lại các kết quả từ CNN + dựa vào vị trí của các box tách từ ảnh gốc, ta xếp kết quả thành ‘2M8M’


#3

Ý em hỏi là nếu em muốn giải captcha phức tạp thì nên bắt đầu từ đâu để có data training tốt vậy bác


#4

Hi,

Có thể sử dụng python captcha để gen hình captcha, audio captcha … bla…

Demo live captcha solver để crawl dataset từ nhiều nơi có sử dụng captcha