In this case a ReCaptcha usage with web2py.
<script type="text/javascript">
var RecaptchaOptions = {
theme: 'custom',
custom_theme_widget : 'sm_captcha'
};
</script>
<div id="recaptcha">{{=T('Type the characters you see in the picture:')}}</div>
<div id="sm_captcha">
<div id="recaptcha_image"></div>
<input type="text" id="recaptcha_response_field" class="inputBox" name="recaptcha_response_field" tabindex="14" />
{{if form.errors.captcha:}}
<div class="error" id="captcha_error">
{{=form.errors.captcha}}
</div>
{{pass}}
<div id="recaptcha_buttons">
<a id="recatchaReload" href="javascript:Recaptcha.reload()">Reload</a>
<a id="recatchaAudio" href="javascript:Recaptcha.switch_type('audio')">Audio</a>
<a id="recatchaImage" href="javascript:Recaptcha.switch_type('image')">Text</a>
<a id="recatchaHelp" href="javascript:Recaptcha.showhelp()">Help</a>
</div>
<script src="https://api-secure.recaptcha.net/challenge?k=YOUR_RECAPTCHA_KEY" type="text/javascript"></script><noscript><iframe frameborder="0" height="auto" src="https://api-secure.recaptcha.net/noscript?k=YOUR_RECAPTCHA_KEY" width="auto"></iframe><br /><input name="recaptcha_response_field" type="hidden" value="manual_challenge" /></noscript>
</div>
The result of these settings:

Comment