ã¯ããã«
ãã®èšäºã§ã¯ã ifolder.ruã䜿çšããŠãã£ããã£ããããã³ã°ããããã»ã¹ã«ã€ããŠç°¡åã«èª¬æããŸãã ããã»ã¹ã§ã®PythonèšèªãšãµãŒãããŒãã£ã©ã€ãã©ãªã®äœ¿çšã Open Computer Vision ©Intelã©ã€ãã©ãªã®äžéšãšããŠããå€æã¢ã«ãŽãªãºã ã䜿çšãããšãç»åãã€ãºãåãé€ãããšãã§ãã䜿ããããé«éãªFANNã©ã€ãã©ãªïŒFast Artificial Neural NetworkïŒã«ãããç»åèªèåé¡ã«äººå·¥ãã¥ãŒã©ã«ãããã¯ãŒã¯ã䜿çšã§ããããã«ãªããŸãã
ç§ã®åæ©ã¯ããŸãPythonèšèªãè©Šãããšã§ããã ãåãã®ããã«ãèšèªãåŠã¶æè¯ã®æ¹æ³ã¯ããã®èšèªã«é©çšãããåé¡ã解決ããããšã§ãã ãããã£ãŠãç»ååŠçããã»ã¹ã®èª¬æãšäžŠè¡ããŠã䜿çšããã©ã€ãã©ãªãšçšéã«ã€ããŠèª¬æããŸãã
åé¡ã®æŠèŠ
次ã®çš®é¡ã®ãã£ããã£ããããŸãã
ifolder.ruã¯ããã¡ã€ã«ã®ãã¹ãã£ã³ã°ãµãŒãã¹ã§ãããããŠã³ããŒãããã³ã¢ããããŒãæã«ãããªããããããã§ã¯ãªãããšã確èªããããã®ã§ãã 以äžã«èª¬æããããå€æã¢ã«ãŽãªãºã ããã®åé¡ã«é©çšããããšãã£ãšæã£ãŠããããããªãœãŒã¹ã䜿çšãããŸããã
ãã®ãã£ããã£ãèªèããããšã®é£ããã¯äœã§ããïŒ ãããã®ããã€ãããããŸããç§ãã¡ã¯åé¡ã解決ããè€éããžã®åœ±é¿ã®é ã«ãããã説æããŸãïŒ
1. ãã£ã©ã¯ã¿ãŒã®äº€å·®ã®ååšã ãã®ãããªå Žåã®è¯ãäŸïŒ
ãã®ãããªã±ãŒã¹ã®å²åã¯æ¯èŒçå°ããããããèªèã®å¯Ÿè±¡ã§ã¯ãªãããšããŒã¯ãããçµå©ã§èšé²ããŸãã
2. ç·ã®ååšã åç»åã«ã¯ãç°ãªãé·ãã®4æ¬ã®ç·ïŒããã«ãé·ãã¯èªèå¯èœãªãªããžã§ã¯ãã®ç·åœ¢èŠçŽ ã«çžåœããå ŽåããããŸãïŒã倪ããåŸæè§ããããŸãã ç§ãã¡ã¯ãããããåãé€ãå¿ èŠããããã€ãºã®äž»ãªèŠçŽ ãšèããŠããŸãã
3. ç»åå ã®æåã®é 眮ã®å€§ããªããªãšãŒã·ã§ã³ã ã·ã³ãã«ã¯ãç°ãªãã¬ãã«ã§ãç°ãªãè·é¢ã«é 眮ãããŸãã
4. æåãå転ãããŸãã ã·ã³ãã«ã¯1ã€ã®è»žã«æ²¿ã£ãŠåŸæããããŸãããæ倧30床ãŸã§ã§ãïŒå€ã¯çµéšçã«ååŸãããŸãïŒã
5. æåã®æµ®åãµã€ãºãšå€ªãã
ãã詳现ãªèª¿æ»ãããã»ã©åçŽã§ã¯ãªããéåžžã«åçŽãªãã£ããã£ã«èŠããŸãã :)ãããããã¹ãŠãããã»ã©æªãã¯ãããŸããã å§ããŸãããã
ã¹ããŒãž1.ãã¬ãŒãã³ã°ãµã³ãã«ã®äœæãšååŠç
ãŸãããµã€ãããæ°çŸã®ãã£ããã£ãµã³ãã«ïŒ500ãªã©ïŒãããŠã³ããŒãããŸããããã§ã¢ã«ãŽãªãºã ãèšç®ãããã¥ãŒã©ã«ãããã¯ãŒã¯ã®äž»èŠãªãã¬ãŒãã³ã°ãµã³ãã«ãäœæã§ããŸãã
urllibã©ã€ãã©ãªãšç°¡åãªã¹ã¯ãªããã䜿çšããŠãnçªç®ã®æ°ã®å¿ èŠãªãµã³ãã«ããµã€ãããããŠã³ããŒãããŸãã 次ã«ãããããgifãã8ãããã®ããããããã«å€æããŸããåŒãç¶ããã®åœ¢åŒã§äœæ¥ããŸãã éèŠãªãã€ã³ãã¯ãç»åã®å転ã§ãã ã€ãŸã é»ãèæ¯ã«çœããªããžã§ã¯ãã åŸã§ãããããªããªã®ããæããã«ãªãã§ãããã
äžèšã®ãã¹ãŠãå®è¡ããã¹ã¯ãªããïŒ
urllib2 ãã urlopenã ã€ã³ããŒã
urllib import urlretrieve ãã
PIL ã€ã³ããŒã ImageãImageOpsãImageEnhanceãã
èŒžå ¥ OS
ã€ã³ããŒãã·ã¹ãã
å ã€ã³ããŒã
èŒžå ¥ æé
def main ïŒ urlãn ïŒ ïŒ
ïŒURLã»ãã·ã§ã³URLãååŸ
data = urlopen ïŒ url ïŒ ã èªã ïŒ ïŒ
match = re ã æ€çŽ¢ ïŒ r "/ random / images / \ïŒ session = [a-z0-9] + \ïŒ quot ;, data ïŒ
äžèŽããå Žå ïŒ
imgurl = " ifolder.ru" +ãããã ã°ã«ãŒã ïŒ ïŒ
ãã®ä» ïŒ
ãªã¿ãŒã³ -1
ïŒgen imgs
ç¯å²å ã® i ïŒ n ïŒ ïŒ
urlretrieve ïŒ imgurlã '/ test /' + str ïŒ i ïŒ + '.gif' ïŒ
æé ã å¯ã ïŒ 1 ïŒ
print str ïŒ i ïŒ + 'of' + str ïŒ n ïŒ + 'downloaded'
ïŒããããå€æãã
ç¯å²å ã® i ïŒ n ïŒ ïŒ
img =ã€ã¡ãŒãžã open ïŒ '/ test /' + str ïŒ i ïŒ + '.gif' ïŒ ã å€æ ïŒ 'L' ïŒ
img = ImageOpsã å転 ïŒ img ïŒ
img = ImageEnhanceã ã³ã³ãã©ã¹ã ïŒ img ïŒ ã 匷å ïŒ 1.9 ïŒ
imgã ä¿å ïŒ '/ test /' + str ïŒ i ïŒ + '.bmp' ïŒ
ïŒos.unlinkïŒ '/ test /' + strïŒiïŒ+ '.gif'ïŒ
__name__ == "__main__"ã®å Žå ïŒ
url = sys argv [ -1 ]
URLã§ãªã å Žå ã äž ïŒ ïŒ ã startswith ïŒ "http" ïŒ ïŒ
ãusageïŒpython dumpimages.py http://ifolder.com/?numãã å°å·ããŸã
sys çµäº ïŒ -1 ïŒ
ã¡ã€ã³ïŒ urlã 500 ïŒ
ã¹ããŒãž2ããªããžã§ã¯ãã®ãã€ãºé€å»ãããŒã«ã©ã€ãºããã³åé¢ã
æãèå³æ·±ããæéã®ãããã¹ããŒãžã ã¬ãã¥ãŒã§ç€ºããcaptchaã®äŸã¯ããã®èšäºã®ãµã³ãã«ãšããŠåãäžããããã«ããããšé£æºããŠãããŸãã ãããã£ãŠãæåã®æ®µéã®åŸã次ã®ãã®ããããŸãã
ç»åãæäœããããã«ã PILã©ã€ãã©ãªã䜿çšããŸããã ãã§ãããŒãšããŠäœ¿ããããããéåžžã«æ©èœçã§éåžžã«äŸ¿å©ãªã©ã€ãã©ãªã
çŸã«æ»ããŸãããã ãã®å Žåããã€ãºãšã¯ç·ãæå³ããŸãã
åé¡ã®è§£æ±ºçãšããŠãããã€ãã®ãªãã·ã§ã³ããããŸãã
1.éºäŒçã¢ã«ãŽãªãºã ã
2.ããå€æã ããã¯äžçš®ã®èªåãã¯ãã«åãšèããããšãã§ããŸãã
Yandex captchaããããã³ã°ããåæ§ã®ã¿ã¹ã¯ã解決ããããã»ã¹ãå«ããGAã¯Habréã§æ°ååãäžããããŸããã çŽç·ãæ€åºããããã®éºäŒçã¢ã«ãŽãªãºã ã®ä¿®æ£ãæžãããšã¯é£ãããããŸããã
ãã ãã2çªç®ã®ã¢ã«ãŽãªãºã ãéžæããŸããã GAãšæ¯èŒããŠãããå€æã¯ãæ°åŠçã«å³å¯ã§æ±ºå®è«çãªã¢ã«ãŽãªãºã ã§ãããã©ã³ãã ãªèŠå ã®åœ±é¿ã¯ãããŸããã ãã®å ŽåããªãœãŒã¹ãããŸãæ¶è²»ãããåæã«ç解ããŠäœ¿çšããã®ã«ååç°¡åã§ãã
ç°¡åã«èšããšãã¢ã«ãŽãªãºã ã®æå³ã¯ãå¹³é¢äžã®ä»»æã®ç·ã2ã€ã®å€æ°-åŸæè§ãšåç¹ããã®è·é¢ïŒÎžãrïŒã§å®çŸ©ã§ãããšããããšã§ãã ãããã®å€æ°ã¯èšå·ãšèŠãªãããšãã§ããç¬èªã®2次å 空éã圢æããŸãã çŽç·ã¯ç¹ã®éåã§ãããããããã«ç¬èªã®èšå·ã®ãã¢ïŒã·ãŒã¿ãrïŒãããããããããã®èšå·ã®ç©ºéã«ã¯ãå ã®å¹³é¢ïŒç»åïŒäžã®ç·ã®ç¹ã«å¯Ÿå¿ããèšå·ã®æéè¿åå ã«ç¹ã®ã¯ã©ã¹ã¿ãŒïŒäº€å·®ç¹ã®æ倧å€ãŸãã¯ããŒã¯ïŒããããŸãã ãããããã¹ãŠã¯èŠãããããç°¡åã§ãã :)
ãŠã£ãããã£ã¢ã§è©³çŽ°ãèªãã§ã ããã§ã¢ã«ãŽãªãºã ã®èŠèŠåãèŠãããšãã§ããŸã ã ããã«ãç§ãæå³ããããšãæããã«ãªããŸãã
å®è£ ãèªåã§æžãã®ã¯åœç¶æ ãè ã§ãã ããã«ã OpenCVã©ã€ãã©ãªã«ãããC / C ++ã§ããäœæ¥ããŸãã Pythonã«ã¯ãç°¡åã«çµã¿ç«ãŠãŠã€ã³ã¹ããŒã«ã§ãããã€ã³ããŒããããŸãã
äžè¬ã«ãOpenCVã¯ããªãäœã¬ãã«ã®ã©ã€ãã©ãªã§ãããPythonã§ã®äœæ¥ã¯ããŸã䟿å©ã§ã¯ãªããããèè ã¯PILãªããžã§ã¯ã圢åŒã«å€æããããã®ã¢ããã¿ãŒãæäŸããŠããŸãã ããã¯éåžžã«ç°¡åã«è¡ãããŸãïŒ
src = cvLoadImage ïŒ 'image.bmp' ã 1 ïŒ ïŒOpenCV ãªããžã§ã¯ã
pil_image =ã¢ããã¿ã Ipl2PIL ïŒ src ïŒ ïŒPIL ãªããžã§ã¯ã
è¡ãåé€ããæé ã¯æ¬¡ã®ãšããã§ãã
def RemoveLines ïŒ img ïŒ ïŒ
dst = cvCreateImage ïŒ cvGetSize ïŒ img ïŒ ãIPL_DEPTH_8Uã 1 ïŒ
cvCopy ïŒ imgãdst ïŒ
storage = cvCreateMemStorage ïŒ 0 ïŒ
lines = cvHoughLines2 ïŒ imgãstorageãCV_HOUGH_PROBABILISTICã 1 ãCV_PI / 180ã35ã35ã3 ïŒ
ã©ã€ã³ã€ã³ã©ã€ã³ã®å ŽåïŒ
cvLine ïŒ dstãã©ã€ã³[ 0 ] ãã©ã€ã³[ 1 ] ãbgcolorã 2ã0 ïŒ
æ»ãå€
ç»åã¯ã¢ãã¯ããã€ãŸãçœããã¯ã»ã«ã«ããå¿ èŠããããŸãã ãã®ãããæåã®æ®µéã§ç»åãå転ããèªèäžã«ç»åãå転ããŸãã
éèŠãªç¹ã¯ã cvHoughLines2é¢æ°ãåŒã³åºãããšã§ã ã CV_HOUGH_PROBABILISTICãã©ã¡ãŒã¿ãŒã«æ³šæãæãå¿ èŠããããŸããããã¯ãã¢ã«ãŽãªãºã ã®ãããã¹ããŒããªãå€æŽã®äœ¿çšãæå³ããŸãã æåŸã®3ã€ã®ãã©ã¡ãŒã¿ãŒãéåžžã«éèŠã§ãããããã¯æ¬¡ãåæ ããŠããŸããç¹åŸŽç©ºéã»ã«å ã®ãã€ã³ãã®æ°ã æå°è¡é·; æ倧ã®ã£ããïŒã®ã£ããïŒãã€ãŸã è¡ããšã®æ¬ èœãã¯ã»ã«ã®æ°ã 詳现ã«ã€ããŠã¯ãã©ã€ãã©ãªã®ããã¥ã¡ã³ããã芧ãã ããã
ãããã®ãã©ã¡ãŒã¿ãæ£ããéžæããããšã¯éåžžã«éèŠã§ããããããªããšãç»åããæåã®äžéšã§ããç·ãåé€ãããããã®éã«ãã€ãºãå€ãæ®ãããããŸãã éžæãããã©ã¡ãŒã¿ã¯æé©ã§ãããšèããŠããŸãããçæ³ããã¯ã»ã©é ãã§ãã ããšãã°ãæ倧ã®ã£ããã2åã«ããŸãããã ããã¯ãã®å¹æã«ã€ãªãããŸãïŒ
è¡ãšãšãã«ãå€ãã®æçšãªæ å ±ãåé€ããŸããã åæã«ãæ£ããéžæããããã©ã¡ãŒã¿ãŒã«ããã蚱容å¯èœãªçµæãââåŸãããšãã§ããŸãã
ç·ãã·ã³ãã«ãšäº€å·®ããããšãå€ããããæçšãªæ å ±ãå¿ ç¶çã«åé€ããããšã«ãã§ã«æ°ä»ããŠããŸãã ããã¯èŽåœçã§ã¯ãããŸãããéšåçã«ã¯åŸã§åŸ©å ã§ãããããæçµçã«ã¯ãã¹ãŠããã¥ãŒã©ã«ãããã¯ãŒã¯ã®ãã¬ãŒãã³ã°ã®çšåºŠã«äŸåããŸãã
次ã®ã¿ã¹ã¯ã¯ããã£ã©ã¯ã¿ãŒã®ããŒã«ã©ã€ãºãšåé¢ã§ãã ããã§ãã¬ãã¥ãŒã®ãã©ã°ã©ã1ããã³3ã§èª¬æãããŠããåé¡ãçºçããŸãã ã·ã³ãã«ã®æµ®åäœçœ®ãšå転ã«ãããäžè¬çãªåº§æšãšäœçœ®ã«äŸåããããšã¯ã§ããŸããã å€ãã®å Žåãã·ã³ãã«ã¯ãã¿ãããããã茪éæ€åºã·ãªãŒãºã®ã¢ã«ãŽãªãºã ã䜿çšã§ããªããªããŸãã
åçŽã«åå²ããå¿ èŠãããããšã¯æããã§ãã èãçŽãããšãªããç»åã®ååã®çœããã¯ã»ã«ã®æ°ãèšç®ãããŠã£ã³ããŠã«è¡šç€ºããŸãã
ã°ã©ããäœæããããã«ã matplotlibã©ã€ãã©ãªãŒã䜿çšããŸããã ãã®ã©ã€ãã©ãªã¯ããã®æè»æ§ãšçµã¿èŸŒã¿ã®æ©èœã«éç«ã£ãŠãããä»ã®èšèªã§ã¯èŠãããŸããã PyQt4㯠ãããã³ããšã³ãGUIãšããŠäœ¿çšãããŸããã
ã°ã©ãã£ãã¯ãç»åãšçžé¢ããããšã3ã€ã®æ¥µå°å€ã®ååšã確èªã§ããŸãã 圌ãã«ãããšãç»åããåãåããããšã«ãªããŸãã ãã®å Žåãæå°å€ãèŠã€ããããã®æé©ãªã¢ã«ãŽãªãºã ã¯ãããããã°ãèŠã€ããã®ãå°é£ã§ãã ãããã£ãŠãããŒã«ã«ãããã ãæ€çŽ¢ããããã®ç°¡åãªã¢ã«ãŽãªãºã ãå®è£ ããŸããããã©ã¡ãŒã¿ã¯çµéšçã«ååŸããããã®ã§ãæé©ãšã¯ã»ã©é ããã®ã§ãã ããã¯éèŠãªãã€ã³ãã§ãããããææ ®æ·±ãã¢ã«ãŽãªãºã ã¯èªèã®å質ãå€§å¹ ã«æ¹åã§ããŸãã
ãœãŒã¹ïŒFindDividingColsãšDivideDigitsïŒã§ç»åãæåã«åå²ããæé ãèŠã€ããããšãã§ããŸãã
次ã«ãæåãããªãã³ã°ããŸã èæ¯é åãããããæ®ã£ãŠããŸãã 倱ãããæçšãªæ å ±ãå埩ããããšããåŸã 䟵é£ãšèšåŒµïŒäŸµé£ãšèšåŒµïŒãééïŒééïŒãªã©ã®åœ¢æ åŠçã¢ã«ãŽãªãºã ã䜿çšããããšããå§ãããŸãã ãããã¯OpenCVã©ã€ãã©ãªã«ãããŸããPythonã§ã®äœ¿çšäŸã¯ãã©ã€ãã©ãªãªããžããª-OpenCV \ samples \ python \ morphology.pyã«ãããŸãã åã ã®ãã£ã©ã¯ã¿ãŒã®åä¿¡ç»åã¯ãã¹ãŠã18x24ã®åäžãµã€ãºã«çž®å°ãããŸãã
æååé¢çµæïŒ
ã¹ããŒãž3.èªè
次ã®æ®µéã¯ããã¥ãŒã©ã«ãããã¯ãŒã¯ã®äœæãšãã®ãã¬ãŒãã³ã°ã§ãã 500åã®ç»åïŒãããã4æåïŒã®ãã¡ããã¬ãŒãã³ã°ã«äœ¿çšããã蚱容å¯èœãªå質ãšã³ã³ãã³ãã®ãµã³ãã«ã1000åæªæºã§ããã 0.5ã®ç¢ºçã§1æåã®èªèã¬ãã«ã«ãããã¯ãŒã¯ããã¬ãŒãã³ã°ãããšãå šäœã®å¹çã¯0.5 ^ 4 = 0.0625ãŸãã¯6ïŒ ã«ãªããŸãã ç®æšã¯éæå¯èœãªä»¥äžã®ãã®ã§ãã çµæã®ãµã³ãã«ã¯åœŒå¥³ã«ãšã£ãŠååã§ããã ããªããæ°æ¥éãäžåœäººããšããŠåããããšããé¡æãæã£ãŠãããªããããã¯ããè¯ãçµæãéæããå¯èœæ§ããããŸããäž»ãªããšã¯ç§ãæã£ãŠããªãå¿èã§ãã :)
ãã¥ãŒã©ã«ãããã¯ãŒã¯ãäœæããŠäœ¿çšããã«ã¯ã FANNã©ã€ãã©ãªã䜿çšãããšäŸ¿å©ã§ãã ãã¡ã€ã«ãªãã§pythonã®Wrapperãçµã¿ç«ãŠãããªãã£ãã®ã§ãSWIGãåãåã£ãã³ãŒããç·šéããå¿ èŠããããŸããã ã³ã³ãã€ã«ãããã©ã€ãã©ãªãPython 2.6ã®ã€ã³ã¹ããŒã©ãŒãããã³ããã€ãã®äœ¿çšäŸãã¬ã€ã¢ãŠãããããšã«ããŸããã ãã¡ãããããŠã³ããŒãã§ããŸãã å°ããªã€ã³ã¹ããŒã«æé ãæžããŸãããINSTALLãåç §ããŠãã ããã
å ¥åã§ã¯ã18 * 24 = 432ãã¯ã»ã«ã®é åãäžããŸãïŒããæ£ç¢ºã«ã¯ããã¯ã»ã«ãææã§ããã°1ããèæ¯ã§ããã°0ãæž¡ããŸãïŒãåºåã§ã¯10åã®æ°åã®é åãååŸããŸãã ãããã£ãŠããã¥ãŒã©ã«ãããã¯ãŒã¯ã®å ¥åå±€ã¯432åã®ãã¥ãŒãã³ã§æ§æãããåºåã¯10ã§ãããã¥ãŒãã³ã®æ°== 432/3ã®å¥ã®é ãå±€ãäœæãããŸãã
ãããã¯ãŒã¯ãäœæããã³ãã¬ãŒãã³ã°ããããã®ã³ãŒãïŒ
pyfann import libfann ãã
num_input = 432
num_output = 10
num_layers = 3
num_neurons_hidden = 144
desired_error = 0.00006
max_epochs = 50000
epochs_between_reports = 1000
ann = libfannã neuro_net ïŒ ïŒ
ã¢ã³ã create_standard ïŒ num_layersãnum_inputãnum_neurons_hiddenãnum_output ïŒ
ã¢ã³ã set_activation_function_hidden ïŒ libfannãSIGMOID_SYMMETRIC_STEPWISE ïŒ
ã¢ã³ã set_activation_function_output ïŒ libfannãSIGMOID_SYMMETRIC_STEPWISE ïŒ
ã¢ã³ã train_on_file ïŒ 'samples.txt' ãmax_epochsãepochs_between_reportsãdesired_error ïŒ
ã¢ã³ã ä¿å ïŒ 'fann.data' ïŒ
ã¢ã³ã ç Žå£ ïŒ ïŒ
䜿çšæ³ïŒ
def MagicRegognition ïŒ imgãann ïŒ ïŒ
ann = libfannã neuro_net ïŒ ïŒ
ã¢ã³ã create_from_file ïŒ 'fann.data' ïŒ
ãµã³ãã«= [ ]
imgã®i ãµã€ãº [ 1 ] ïŒ
imgã®j ãµã€ãº [ 0 ] ïŒ
colordist ïŒ imgãgetpixel ïŒ ïŒ jãi ïŒ ïŒ ãbgcolor ïŒ < 10ã®å Žå ïŒ
ãµã³ãã«[ j + i * imgã ãµã€ãº [ 0 ] ] = 0
ãã®ä» ïŒ
ãµã³ãã«[ j + i * imgã ãµã€ãº [ 0 ] ] = 1
res =ã¢ã³ã å®è¡ ïŒãµã³ãã«ïŒ
è¿å ã€ã³ããã¯ã¹ ïŒ max ïŒ res ïŒ ïŒ
ãããã«
Pythonã¯çŽ æŽãããèšèªã§ãããéåžžã«ç°¡æœã§çŸããã§ããå€ãã®ãµãŒãããŒãã£ã©ã€ãã©ãªãç§ã®ãã¹ãŠã®æ¥ã ã®ããŒãºãã«ããŒããŠããŸãã äž»ã«å åºãªã³ãã¥ããã£ãšããã¥ã¡ã³ãã®éã«ãããäœããšã³ããªãŒãããå€ã ææãä»ç§ã¯ããªããšäžç·ã§ã;ïŒ
䜿çšãããè¿œå ã®ã©ã€ãã©ãªïŒ
ãã³ããŒ
ã·ããŒ
ãœãŒã¹ ïŒ ãã©ãŒ1 ã ãã©ãŒ2 ïŒ
æ§æã匷調ããããã«ã highlight.hohli.comãªãœãŒã¹ã䜿çšãããŸããã
UPDïŒ 1.ãœãŒã¹ã3ã€ã®ãªãœãŒã¹ã«ãªããŒãããŸããã 2.èŠæ±ã§ãdumpimages.pyã¯ãifolderããŒãžã®captchaã«ãªã³ã¯ããããã«ãæ£èŠè¡šçŸã®æåŸã®3æåããã¡ã€ã«ããåé€ããŸããã ãããŠããåäŸãããµãã:)