Սկիզբ » Հայականացում » ասք հայերեն քափչայի մասին

ասք հայերեն քափչայի մասին

| Հուլիս 14, 2012 | Մեկնաբանված չէ |

Քանի որ չտեսությունում սպամում էին, իսկ ես ռադիկալ միջոցների էի դիմել, ու արգելել էի ոչ հայատառ ամենը, նույնիսկ նկարների անունները, մտածեցի որ ակտուալ չէ png֊ն գրել պնգ երբեմն։
Որոշեցի ավելացնել քափչա, բայց ոչ թե պարզապես քափչա, այլ հայրենական քափչա։ Որ հայերեն տառեր հարցնի։

mediawiki 18.3֊ի հետ գալիս է ConfirmEdit հավելումը։

Սկզբիվ պետք է գեներացնել քափչայի նկարները։ Ձեռնարնկներում ասում են, պետք է բառարան, ու ցույց են տալիս համակարգում ինչ որ բառարան։
Ես որոշեցի որպես բառարան օգտագործել aspell-hy պրոյեկտի ցանկը։

# emerge -f aspell-hy

Արխիվը բացելիս նկատում ենք hy-common.cwl նիշքը։ Այն պետք է բացել՝

# preunzip hy-common.cwl

Ստանում ենք hy-common.wl նիշքը որը արդեն կարելի է օգտագործել որպես բառարան։

Հիմա պետք է գեներացնել նկարները։
ConfirmEdit֊ը պարունակում է փայթոն սկրիպտ դրանք գեներացնելու համար
Այն ունի կախվածություն, Փայթոնի imaging գրադարանը՝

# emerge imaging

Նկարում ենք այսպես՝

#!/bin/bash
 SL=/home/noch/captcha
 WORDLIST=$SL/hy-common.wl
 FONT=$SL/ArTarumianGrqiNorBold.ttf
 #FONT=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf
 python $SL/captcha.py --font=$FONT --wordlist=$WORDLIST --key=PASSWORD --output=captcha --count=1000 --verbose

ArTarumianGrqiNorBold.ttf նիշքը դա իրականում իմ փոխած տարբերակն է, երբ ես ստացա նույն տառատեսակի յունիկոդ տարբերակը։
Այստեղ ինձ սպասում էր անակնկալ, որովհետեւ captcha.py սկրիպտը բնավ չի աշխատում ոչ լատինատար տառերի հետ։
Ասում էր՝ չեմ անի, քանզի «because it contains non-alphabetic characters» մեջբերման վերջ։
Ես փայթն չգիտեմ բնավ, սակայն ակնհայտ է, որ պետք է սկրիպտը փոխել։
Այսպիսի տող կա, որը ուշադրություն է գրավում։

r = re.compile('[^a-z]');

Ես չգիտեի, re֊ն որն է, կարդացի ձեռնարկ, ու փոխեցի այդ տողը հետեւյալով՝

re.U
 r = re.compile('[\u0000-\uFFFF]');

Ահա, հիմա սկրիպտը աշխատեց,

word is արՈԻ
 image_a8fdc272_5729344832344ace.png
 word is չաէյ
 image_4c6948ee_40c45604f8ac8c9c.png
 word is ԱնԻՄ
 image_5429d63a_5a72ee839989336f.png
 word is Մօաո
 image_2fc16caa_db478d58e1e0694b.png

սակայն գեներացրած պատկերների մեջ տառերի տեղը քառակուսիներ էին։

Քառակուսիներ

Ակնհայտ է, որ կոդավորման հետ խնդիր կար։
Բացի դրանից, կոդի այս հատցածը՝

print "word is %s" % word

կատարվելիս տպում էր չորս տառից բաղկացած բառեր, իսկ գեներացրած պատկերներում տառերը ութն էին։ Այսինքն հաստատ յունիկոդի հետ խնդիր է։
Սկզբից ես ենթադրեցի, որ իմ տողը յունիկոդ տող է, քանի որ սկրիպտի որ մասում էլ այն print չանեի, հայերեն գրում էր։
Ի վերջո, կանչվում էր

gen_captcha(word, font, 40, os.path.join(output, filename))

ֆունկցիան, որտեղ եւ գեներացվում է նկարը։
Ահա այս մասում է հաստատ խնդիրը՝

# create a font object
 font = ImageFont.truetype(fontname,fontsize)
 # determine dimensions of the text
 dim = font.getsize(text)
 # create a new image significantly larger that the text
 edge = max(dim[0], dim[1]) + 2*min(dim[0], dim[1])
 im = Image.new('RGB', (edge, edge), bgcolor)
 d = ImageDraw.Draw(im)
 x, y = im.size
 # add the text to the image
 d.text((x/2-dim[0]/2, y/2-dim[1]/2), text, font=font, fill=fgcolor)

Կրկին նայեցի ձեռնարկը։
Պարզվում է կարելի է տառատեսակը բեռնել որպես յունիկոդ ֆոնթ՝

font = ImageFont.truetype(fontname,fontsize,encoding=’unic’)
ImageFont.truetype(file, size, encoding=value) => Font instance

 

(New in 1.1.5) Load a TrueType or OpenType font file, and create a font object using the given encoding. Common encodings are “unic” (Unicode), “symb” (Microsoft Symbol), “ADOB” (Adobe Standard), “ADBE” (Adobe Expert), and “armn” (Apple Roman).

Փոխեցի, աշխատացրի, սակայն կրկին քառակուսիներ՝
Քառակուսիներ

Գուցե իմ տողը յունիկո՞դ չէ։
Բայց այն ոչ մի տեղ հայտարարված չէ, փայթոնում չեն հայտարարում օգտագործելուց առաջ։
Պարզվում է, ամեն մի տողը կարելի է դեքոդ անել՝

font = ImageFont.truetype(fontname,fontsize,encoding='unic')
 # determine dimensions of the text
 dim = font.getsize(text)
 # create a new image significantly larger that the text
 edge = max(dim[0], dim[1]) + 2*min(dim[0], dim[1])
 im = Image.new('RGB', (edge, edge), bgcolor)
 d = ImageDraw.Draw(im)
 x, y = im.size
 # add the text to the image
 text0 = text.decode("utf-8")
 d.text((x/2-dim[0]/2, y/2-dim[1]/2), text0, font=font, fill=fgcolor)

Ահա, ստացանք հայրենական քափչա

Հայատառ քափչա

Հայատառ քափչա

Ես որոշեցի մեծացել փոփոխականը ու չունենալ լավ փչացրած տառեր, մեկ է հայերեն ՕՑՌ միայն հայերն են կարողանում անել փաթեթային ձեւով։

Գեներացրի մի քանի հազար, տեղադրեցի սպասարկչի վրա։
Պարզվեց, որ 18.3֊ի հետ եկած ConfirmEdit֊ը իր իսկ հետ չի աշխատում։
Այնպես որ ես այն քաշեցի սվնից։

svn co http://svn.wikimedia.org/svnroot/mediawiki/branches/REL1_18/extensions/ConfirmEdit

Ահա հիմա վերջապես ամենը աշխատեց՝

Հայատառ քափչա

Հայատառ քափչա

Այնպես որ ռոբոտները այլեւս չեն գրանցվի, իսկ դուք զգոն եղեք որ ձեզ ռոբոտի տեղ չդնեն։ Քափչա գրելիս։ ։Ճ
ու տենց

Սկզբնաղբյուր

ասք հայերեն քափչայի մասին, 10.0 out of 10 based on 2 ratings

Նշագրեր: , , , , , , , ,

Բաժին: Հայականացում, Վեբ

Կիսվել , տարածել , պահպանել

VN:F [1.9.20_1166]
Rating: 10.0/10 (2 votes cast)

Մեկնաբանեք

Կհաստատվեն միայն մեսրոպատառ հայերենով գրած մեկնաբանությունները

280