Now that we have a classifier for predicting individual letters, we now move onto the next step in our plan - predicting words. To do this, we want to predict each letter from each of these segments, and put those predictions together to form the predicted word from a given CAPTCHA.
Our function will accept a CAPTCHA and the trained neural network, and it will return the predicted word:
def predict_captcha(captcha_image, neural_network):
subimages = segment_image(captcha_image)
# Perform the same transformations we did for our training data
dataset = np.array([np.resize(subimage, (20, 20)) for subimage in subimages])
X_test = dataset.reshape((dataset.shape[0], dataset.shape[1] * dataset.shape[2]))
# Use predict_proba and argmax to get the most likely prediction
y_pred = neural_network.predict_proba(X_test)
predictions = np.argmax(y_pred, axis=1)
# Convert predictions to letters...