captcha.pl:
my $font_height=8;
my %font=(
a=>[4,[0,2,1,1,2,1,3,2,3,5,4,6],[3,3,1,3,0,4,0,5,1,6,2,6,3,5]],
b=>[3,[0,0,0,6,2,6,3,5,3,4,2,3,0,3]],
c=>[3,[3,6,1,6,0,5,0,4,1,3,3,3]],
d=>[3,[3,0,3,6,1,6,0,5,0,4,1,3,3,3]],
e=>[3,[3,6,1,6,0,5,0,3,1,2,3,2,3,3,2,4,0,4]],
f=>[3,[1,6,1,1,2,0,3,0],[0,3,2,3]],
g=>[3,[3,6,1,6,0,5,0,4,1,3,3,3,3,7,2,8,0,8]],
h=>[3,[0,0,0,6],[0,3,2,3,3,4,3,6]],
i=>[2,[1,3,1,6],[1,1,1.5,1.5,1,2,0.5,1.5]],
j=>[3,[2,3,2,7,1,8,0,7],[2,1,2.5,1.5,2,2,1.5,1.5]],
k=>[3,[0,0,0,6],[0,4,1,4,2,2],[0,4,1,4,3,6]],
l=>[2,[0.5,0,0.5,5,1.5,6]],
m=>[4,[0,6,0,3,1,3,2,4],[2,6,2,3,3,3,4,4,4,6]],
n=>[3,[0,3,0,6],[0,4,1,3,2,3,3,4,3,6]],
o=>[3,[0,4,1,3,2,3,3,4,3,5,2,6,1,6,0,5,0,4]],
p=>[3,[0,8,0,3,2,3,3,4,3,5,2,6,0,6]],
q=>[3,[3,6,1,6,0,5,0,4,1,3,3,3,3,8],[2,7,4,7]],
r=>[3,[0,3,0,6],[0,4,1,3,2,3]],
s=>[3,[0,6,2,6,3,5,0,4,1,3,3,3]],
t=>[3,[1,1,1,5,2,6],[0,3,2,3]],
u=>[3,[0,3,0,6,2,6,3,5,3,3]],
v=>[3,[0,3,1.5,6,3,3]],
w=>[4,[0,3,0,5,1,6,2,5,3,6,4,5,4,3]],
x=>[3,[0,3,3,6],[0,6,3,3]],
y=>[3,[0,3,0,5,1,6,3,6],[3,3,3,7,2,8,0,8]],
z=>[3,[0,3,3,3,0,6,3,6],[0.5,4.5,2.5,4.5]],
' '=>[3],
);
1-й элемент массива - ширина символа в пикселях, следующие массивы - это ломанные линии, координаты точек x0,y0,x1,y1,x2,y2,...xn,yn.
К линиям применяется рандонмая трансформация. За подробностями смотри captcha.pl