рдкрд╛рдпрдерди рдХреИрдкреНрдЪрд╛ рдбрд┐рдХреЛрдбрд┐рдВрдЧ

рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдкреНрд░рдердо-рд╡реНрдпрдХреНрддрд┐ рдХрдерд╛ рд░реВрдк рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рдмреЗрди рд╕реНрдЯреБрдЯрд░, рдЪрд╛рд░реНрд▓реНрд╕ рд╕реНрдЯрд░реНрдЯ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп (CSU) рдореЗрдВ рд╕реВрдЪрдирд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдирд╛рддрдХред


рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╢реЛрдз рдкреНрд░рдмрдВрдз рдПрдХ рдЫрд╡рд┐ рд╕реЗ рдкрд╛рда рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдерд╛ред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрджрд┐ рдореБрдЭреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рдорд╛рдиреНрдпрддрд╛ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рд▓рд╛рд╣рдХрд╛рд░, рдбреЙред рдЧрд╛рдУ рдЬреБрдирдмрд┐рди рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╢реЛрдз рдкреНрд░рдмрдВрдз рд▓рд┐рдЦрддрд╛ рд╣реВрдВред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рдорд┐рд▓рд╛ рдФрд░ рдпрд╣рд╛рдБ рдореИрдВ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рд╕реАрдЦреАрдВред рдЕрдЧрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдРрд╕рд╛ рдерд╛ рдЬрдм рдореИрдВ рдмрд╕ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рдерд╛ ...

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВрдиреЗ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдирд┐рдпрдорд┐рдд рдЪрд┐рддреНрд░ рд▓реЗрдиреЗ рдФрд░ рдЙрдирд╕реЗ рдкрд╛рда рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореЗрд░реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдЪрд╛рд░ рдХреИрдкреНрдЪрд╛ рд╣реИрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереЗред рдЬреИрд╕рд╛ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ, рдХреИрдкреНрдЪрд╛ рд╕рднреА рдХреА рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рдмрд╛рддреЗрдВ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ "рдЙрди рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░реЗрдВ рдЬреЛ рдЖрдк рдЫрд╡рд┐ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ" рдкрдВрдЬреАрдХрд░рдг рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреГрд╖реНрдареЛрдВ рдкрд░ред

рдХреИрдкреНрдЪрд╛ рдХреЛ рдЗрд╕рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрдард┐рдирд╛рдИ рдХреЗ рдкрд╛рда рдкрдврд╝ рд╕рдХреЗ, рдЬрдмрдХрд┐ рдПрдХ рдорд╢реАрди (рд╣рд╛рдп, reCaptcha!) рдирд╣реАрдВ рдХрд░ рд╕рдХрддреАред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдиреЗ рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд▓рдЧрднрдЧ рд╣рд░ рдХреИрдкреНрдЪрд╛ рдХреЛ рдХрдИ рдорд╣реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореИрдВрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ - 60% рд╕реЗ рдЕрдзрд┐рдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдореЗрд░реЗ рдЫреЛрдЯреЗ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред



рдЕрдкрдиреЗ рд╢реЛрдз рдореЗрдВ, рдореБрдЭреЗ рдРрд╕реА рдХреЛрдИ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдорд┐рд▓реА, рдЬреЛ рдореЗрд░реА рдорджрдж рдХрд░реЗред рд╣рд╛рдВ, рд▓реЗрдЦ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ PHP рдФрд░ рдкрд░реНрд▓ рдореЗрдВ рдХреБрдЫ рдЧреИрд░-рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓реЗ, рдЙрдирд╕реЗ рдХреБрдЫ рдЕрдВрд╢ рд▓рд┐рдП рдФрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХреИрдкреНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдорджрдж рдирд╣реАрдВ рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛ред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реВрдВ рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдпрд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╡реЗ рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдбрд░ рдерд╛ рдХрд┐ рд╡реЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдмреБрд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреИрдкреНрдЪрд╛ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╕рдкрд╛рд╕ рдШреВрдордирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдХрд┐рдВрдЧ рдХреИрдкреНрдЪрд╛ рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╕рд╛рдордЧреНрд░реА рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЬреЛ рдХреБрдЫ рдмрддрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕рдХреА рдПрдХ рд╕реВрдЪреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:



рдкреНрд░рдпреБрдХреНрдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдБ


рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкреАрдЖрдИрдПрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди 2.5 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рдкрд╛рдпрдерди 2.6 рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╣ рдкрд╛рдпрдерди 2.7.3 рдХреЗ рддрд╣рдд рдареАрдХ рдЪрд▓рддрд╛ рд╣реИ ред рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред )ред



рдЙрдиреНрд╣реЗрдВ рдЙрдкрд░реЛрдХреНрдд рдХреНрд░рдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рдкреАрдЫреЗ рд╣рдЯрдирд╛


рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореИрдВ рдХреЛрдб рдореЗрдВ рд╕реАрдзреЗ рдХрдИ рдорд╛рди рд╕реЗрдЯ рдХрд░реВрдВрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХреИрдкреНрдЪрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреИрдкреНрдЪрд╛, рдпрд╣ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?



рдЬреНрдпрд╛рджрд╛рддрд░ рдХреИрдкреНрдЪрд╛ рдПрдХ рддрд░рдлрд╝рд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдЪрд░рд┐рддреНрд░ рд╕реЗрдЯ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рд╕реЗ рдХреИрдкреНрдЪрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВред рдПрдХ рдФрд░ рд╕реВрдХреНрд╖реНрдорддрд╛ - рдордиреБрд╖реНрдп рдХреЗ рд▓рд┐рдП рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдорд╢реАрди рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рдирд╣реАрдВред рдХреИрдкреНрдЪрд╛ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ "рдХреНрдпрд╛ рдЖрдк рдЗрдВрд╕рд╛рди рд╣реИрдВ?" рдореВрд▓ рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдкреНрд░рддреАрдХреЛрдВ рдпрд╛ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрдИ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рд╕реНрдкреИрдо рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреИрдкреНрдЪрд╛ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рд▓рд╛рдЗрд╡ рдЖрдИрдбреА рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдкреГрд╖реНрда рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЫрд╡рд┐ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЗрд╕рдХреЗ рдкрд╛рда рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдордВрдЪ рдкрд░ рд╡рд┐рдпрд╛рдЧреНрд░рд╛ рдХреЛ рд╕реНрдкреИрдо рдХрд░рдиреЗ рдпрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЬрд╛рд░реЛрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрдВрдЬреАрдХрд░рдгреЛрдВ рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдЖрдИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЫрд╡рд┐ рдорд╛рдиреНрдпрддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВ рдФрд░ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдУрд╕реАрдЖрд░ (рдСрдкреНрдЯрд┐рдХрд▓ рдХреИрд░реЗрдХреНрдЯрд░ рд░рд┐рдХреЙрдЧреНрдирд┐рд╢рди) рдЗрди рджрд┐рдиреЛрдВ рдмрд╣реБрдд рд╕рдЯреАрдХ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдореБрджреНрд░рд┐рдд рдкрд╛рда рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд░рдВрдЧ рдФрд░ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдПрдХ рддрд░рд╣ рдХреА рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреА рджреМрдбрд╝ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╡реЗ рдХрд┐рд╕реА рднреА рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред рдПрдиреНрд╣рд╛рдВрд╕реНрдб рдХреИрдкреНрдЪрд╛ рдХреЛ рд╣рд░рд╛рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕рдВрднрд╡ рд╣реИред рд╕рд╛рде рд╣реА, рдЫрд╡рд┐ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЖрдо рд▓реЛрдЧреЛрдВ рдореЗрдВ рдЬрд▓рди рдкреИрджрд╛ рди рд╣реЛред

рдЫрд╡рд┐

рдпрд╣ рдЫрд╡рд┐ рдПрдХ рдХреИрдкреНрдЪрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреИрдкреНрдЪрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдЗрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдХреИрдкреНрдЪрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдлреЗрдж рд░рдВрдЧ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдХреБрдЫ рд╢реЛрд░ (рдкрд┐рдХреНрд╕реЗрд▓, рд░рдВрдЧ, рд░реЗрдЦрд╛рдПрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд░рдВрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЕрдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЗрд╕ рд╢реЛрд░ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдордЬрдмреВрдд рдХреИрдкреНрдЪрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреИрд╕реЗ рдвреВрдВрдвреЗрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗрдВ



рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдкрд╛рда рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред Google рдХреЗ рд╕рд╛рде, рдЖрдк рд╣рдЬрд╛рд░реЛрдВ рд▓реЗрдЦ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рда рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рддрд░реАрдХреЛрдВ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд░рдВрдЧ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╢реЛрдз рдкреНрд░рдмрдВрдз рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдмрд╣реБ-рдореВрд▓реНрдпрд╡рд╛рди рдЫрд╡рд┐ рдЕрдкрдШрдЯрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рдЫрд╡рд┐ рдХреЗ рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рд╕рд╛рдЬрд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд░рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣реАрдХреГрдд рдЫрд╡рд┐ рдореЗрдВ рд╕рднреА рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреИрдкреНрдЪрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рддреАрди рдкреНрд░рд╛рдердорд┐рдХ рд░рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:



рдкрд╛рдпрдерди рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧреЗрдЧрд╛ред

рдирд┐рдореНрди рдХреЛрдб рдЫрд╡рд┐ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЬреАрдЖрдИрдПрдл рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ 255 рд░рдВрдЧ рд╣реИрдВ) рдФрд░ рд░рдВрдЧреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

from PIL import Image im = Image.open("captcha.gif") im = im.convert("P") print im.histogram() 


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:

 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0 , 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 2, 0, 1, 0, 0, 1, 0, 2, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 3, 1, 3, 3, 0, 0, 0, 0, 0, 0, 1, 0, 3, 2, 132, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 15, 0 , 1, 0, 1, 0, 0, 8, 1, 0, 0, 0, 0, 1, 6, 0, 2, 0, 0, 0, 0, 18, 1, 1, 1, 1, 1, 2, 365, 115, 0, 1, 0, 0, 0, 135, 186, 0, 0, 1, 0, 0, 0, 116, 3, 0, 0, 0, 0, 0, 21, 1, 1, 0, 0, 0, 2, 10, 2, 0, 0, 0, 0, 2, 10, 0, 0, 0, 0, 1, 0, 625] 


рдпрд╣рд╛рдБ рд╣рдо рдЪрд┐рддреНрд░ рдореЗрдВ 255 рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдлреЗрдж (255, рд╕рдмрд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ) рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рд▓рд╛рд▓ (рдкрд╛рда) рдЖрддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ:

 from PIL import Image from operator import itemgetter im = Image.open("captcha.gif") im = im.convert("P") his = im.histogram() values = {} for i in range(256): values[i] = his[i] for j,k in sorted(values.items(), key=itemgetter(1), reverse=True)[:10]: print j,k 


рдФрд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рд░рдВрдЧрдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛
255625
212365
220186
219135
169132
227116
213115
23421
20518
18415


рдпрд╣ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ 10 рд╕рдмрд╕реЗ рдЖрдо рд░рдВрдЧреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рд╕рдлреЗрдж рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЧреНрд░реЗ рдФрд░ рд▓рд╛рд▓ рдЖрддреЗ рд╣реИрдВред

рдПрдХ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрди рд░рдВрдЧ рд╕рдореВрд╣реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдИ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдо рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдирдИ рдмрд╛рдЗрдирд░реА рдЗрдореЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВ (2 рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕реЗ), рдЬрд╣рд╛рдВ рдЗрд╕ рд░рдВрдЧ рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛рд▓реЗ рд░рдВрдЧ рд╕реЗ рднрд░реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рд╕рдлреЗрдж рд╣реЛрддрд╛ рд╣реИред

рд▓рд╛рд▓ рд╕рдмрд╕реЗ рдЖрдо рд░рдВрдЧреЛрдВ рдореЗрдВ рддреАрд╕рд░рд╛ рдмрди рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ 220 рдХреЗ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд░рдВрдЧ 227 220 рдХреЗ рдХрд░реАрдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рд╕рдореВрд╣ рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдкрд╛рд╕ рд░рдЦреЗрдВрдЧреЗред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдХреИрдкреНрдЪрд╛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЬреАрдЖрдИрдПрдл рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреА рдПрдХ рдирдИ рдЫрд╡рд┐ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдЙрд╕ рд░рдВрдЧ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдореВрд▓ рдЫрд╡рд┐ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЙрд╕реЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрд╕реА рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рджреВрд╕рд░реА рдЫрд╡рд┐ рдореЗрдВ рдХрд╛рд▓реЗ рд░рдВрдЧ рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рджреВрд╕рд░реА рдЫрд╡рд┐ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИред

 from PIL import Image im = Image.open("captcha.gif") im = im.convert("P") im2 = Image.new("P",im.size,255) im = im.convert("P") temp = {} for x in range(im.size[1]): for y in range(im.size[0]): pix = im.getpixel((y,x)) temp[pix] = pix if pix == 220 or pix == 227: # these are the numbers to get im2.putpixel((y,x),0) im2.save("output.gif") 


рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВред

рдореВрд▓рдкрд░рд┐рдгрд╛рдо
рдЫрд╡рд┐рдЫрд╡рд┐


рддрд╕реНрд╡реАрд░ рдореЗрдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рдкрд╛рда рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣реЗред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╣рд▓реА рдФрд░ рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рд╕реБрдирддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ: "рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреИрдкреНрдЪрд╛ рдкрд░ рдкрд╛рда рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ?"ред рд╣рд╛рдВ, рд╣рдорд╛рд░реА рддрдХрдиреАрдХ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░рдВрдЧ рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рд╣реИ рдФрд░ рдлрд┐рд░ рдЖрдк рд╡рд░реНрдгреЛрдВ рдХреЗ рд░рдВрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рд╕рдордп рд╣рдордиреЗ рдЫрд╡рд┐ рд╕реЗ рдкрд╛рда рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рдХрд╛рд▓ рд▓рд┐рдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдЪрд░рдг рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЫрд╡рд┐ рдореЗрдВ рдкрд╛рда рд╣реИред рдореИрдВ рдЕрднреА рддрдХ рдпрд╣рд╛рдВ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдордЭ рдХреЛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛, рдЬрдмрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реНрд╡рдпрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред

 for each binary image: for each pixel in the binary image: if the pixel is on: if any pixel we have seen before is next to it: add to the same set else: add to a new set 


рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд░реНрдг рд╕реАрдорд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╣реИ рдФрд░ рджреЗрдЦрдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдХреНрд░рдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рд╛рдБ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЬреИрдХрдкреЙрдЯ рд╣реИ рдФрд░ рдЖрдкрдиреЗ рдЕрдЧрд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдХреА рд╕рд╣реА рдкрд╣рдЪрд╛рди рдХреА рд╣реИред рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдмрд╕ рдПрдХ рдирдИ рдЫрд╡рд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ ( show() рд╡рд┐рдзрд┐) рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рдЯреАрдХ рд╣реИред

 from PIL import Image im = Image.open("captcha.gif") im = im.convert("P") im2 = Image.new("P",im.size,255) im = im.convert("P") temp = {} for x in range(im.size[1]): for y in range(im.size[0]): pix = im.getpixel((y,x)) temp[pix] = pix if pix == 220 or pix == 227: # these are the numbers to get im2.putpixel((y,x),0) # new code starts here inletter = False foundletter=False start = 0 end = 0 letters = [] for y in range(im2.size[0]): # slice across for x in range(im2.size[1]): # slice down pix = im2.getpixel((y,x)) if pix != 255: inletter = True if foundletter == False and inletter == True: foundletter = True start = y if foundletter == True and inletter == False: foundletter = False end = y letters.append((start,end)) inletter=False print letters 


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рд╛:

 [(6, 14), (15, 25), (27, 35), (37, 46), (48, 56), (57, 67)] 


рдпреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдерд┐рддрд┐ рд╣реИрдВред

рдкреИрдЯрд░реНрди рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдР рдФрд░ рд╡реЗрдХреНрдЯрд░ рдЕрдВрддрд░рд┐рдХреНрд╖



рдЫрд╡рд┐ рдорд╛рдиреНрдпрддрд╛ рдХреЛ рдЖрдзреБрдирд┐рдХ рдПрдЖрдИ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдЗрд╕рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЙрджрд╛рд╣рд░рдг рдЬрд╝рд┐рдк рдХреЛрдб рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рджреЗрд╢реЛрдВ рдореЗрдВ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдкрдврд╝рд╛рдирд╛ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреИрдЯрд░реНрди рдорд╛рдиреНрдпрддрд╛ рдХреЛ рдПрдХ рдПрдЖрдИ рд╕рдорд╕реНрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред

рд▓рдЧрднрдЧ рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреИрдЯрд░реНрди рдорд╛рдиреНрдпрддрд╛ рдореЗрдВ рдПрдЖрдИ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдиреЗ рдкрд░ рдЙрдирдХрд╛ рд╕рд╛рдордирд╛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЪрд░рд┐рддреНрд░ рдкрд╣рдЪрд╛рди рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрднреА рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрд╕реЗ 3-4 рдЕрдХреНрд╖рд░ рд╕рд┐рдЦрд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рдЯреАрдХрддрд╛ рдЗрддрдиреА рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдкрд░рд┐рдорд╛рдг рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реЛрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗред рдкрд╣рд▓реЗ рддреЛ рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдереЛрдбрд╝реА рдШрдмрд░рд╛рд╣рдЯ рд╣реБрдИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд╢реЛрдз рдкреНрд░рдмрдВрдз рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рд╣реА рдЧрд╛рдпрдм рдХрдбрд╝реА рдереАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡реЗрдХреНрдЯрд░-рд╕реНрдкреЗрд╕ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ред рдЕрдВрдд рдореЗрдВ, рд╡реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд▓реЗ, рдХреНрдпреЛрдВрдХрд┐

  1. рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд╛рдкрдХ рдЕрдзреНрдпрдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  2. рдЖрдк рдЧрд▓рдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ / рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
  3. рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдирд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
  4. рд╡реЗ рд╡рд░реНрдЧреАрдХреГрдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рд╢реАрд░реНрд╖ рдПрдХреНрд╕ рдореИрдЪ рджреЗрдЦ рд╕рдХреЗрдВред
  5. рдХреБрдЫ рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рд╕рдХрддреЗ? рдЗрд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ рддреБрд░рдВрдд рдкрд╣рдЪрд╛рди рдкрд╛рдПрдВрдЧреЗ, рднрд▓реЗ рд╣реА рдпрд╣ рдкрд╣рд▓реЗ рджреЗрдЦреА рдЧрдИ рдЪреАрдЬрд╝ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛред


рдмреЗрд╢рдХ, рдХреЛрдИ рдореБрдлреНрдд рдкрдиреАрд░ рдирд╣реАрдВ рд╣реИред рдЧрддрд┐ рдореЗрдВ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рдиред рд╡реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдлрд╛рдпрджреЗ рдЕрднреА рднреА рдЗрд╕ рдЦрд╛рдореА рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдХреНрдЯрд░ рд╕реНрдкреЗрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╡реЗрдХреНрдЯрд░ рд╕реНрдкреЗрд╕ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдереНрдпреЛрд░реА рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреА рдЫрд╡рд┐ рдорд╛рдиреНрдпрддрд╛ рдкреВрд░реНрд╡реЛрдХреНрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдереА рдФрд░ рдпрд╣ рдкрд╣рд▓реА рдЪреАрдЬ рдереА рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдкреАрдПрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА, рдЬреЛ рдореИрдВ рдЙрд╕ рд╕рдордп рдкрдврд╝ рд░рд╣рд╛ рдерд╛ред рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ - рдпрд╣рд╛рдБ рд╡рд╛рдкрд╕ рдЖрдПрдВред

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдкрд╕? рд╕рдм рдареАрдХ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡реЗрдХреНрдЯрд░ рд╕реНрдкреЗрд╕ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

 import math class VectorCompare: def magnitude(self,concordance): total = 0 for word,count in concordance.iteritems(): total += count ** 2 return math.sqrt(total) def relation(self,concordance1, concordance2): relevance = 0 topvalue = 0 for word, count in concordance1.iteritems(): if concordance2.has_key(word): topvalue += count * concordance2[word] return topvalue / (self.magnitude(concordance1) * self.magnitude(concordance2)) 


рдпрд╣ 15 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдкрд╛рдпрдерди рд╡реЗрдХреНрдЯрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рд┐рд░реНрдл 2 рд╢рдмреНрджрдХреЛрд╢ рд▓реЗрддрд╛ рд╣реИ рдФрд░ 0 рд╕реЗ 1 рддрдХ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред 0 рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди 1 рдХрд┐ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВред

рдЯреНрд░реЗрдирд┐рдВрдЧ


рдЕрдЧрд▓реА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рд╡реЛ рд╣реИ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдкрдиреЗ рдкрд╛рддреНрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗред рд╣рдореЗрдВ рдПрдХ рд╕реАрдЦрдиреЗ рдХреЗ рд╕реЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдЖрдИ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо (рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдорд╛рдиреНрдпрддрд╛ рдХреА рд╕рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рдбреЗрдЯрд╛, рд╕рдлрд▓рддрд╛ рдХрд╛ рдореМрдХрд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХред рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреИрдкреНрдЪрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдпрд╣реА рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрддреНрдкрдиреНрди рдХреИрдкреНрдЪрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдФрд░ рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ рдЙрдиреНрд╣реЗрдВ рдкрддреНрд░реЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ (рд╕рдореВрд╣) рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЪрд┐рддреНрд░ рдПрдХрддреНрд░ рдХрд┐рдПред рдХрдИ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдерд╛ рдЬреЛ рдХреИрдкреНрдЪрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рдерд╛ред рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдорд╛рдиреНрдпрддрд╛ рд╕рдЯреАрдХрддрд╛ рдмрдврд╝ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред

 from PIL import Image import hashlib import time im = Image.open("captcha.gif") im2 = Image.new("P",im.size,255) im = im.convert("P") temp = {} print im.histogram() for x in range(im.size[1]): for y in range(im.size[0]): pix = im.getpixel((y,x)) temp[pix] = pix if pix == 220 or pix == 227: # these are the numbers to get im2.putpixel((y,x),0) inletter = False foundletter=False start = 0 end = 0 letters = [] for y in range(im2.size[0]): # slice across for x in range(im2.size[1]): # slice down pix = im2.getpixel((y,x)) if pix != 255: inletter = True if foundletter == False and inletter == True: foundletter = True start = y if foundletter == True and inletter == False: foundletter = False end = y letters.append((start,end)) inletter=False # New code is here. We just extract each image and save it to disk with # what is hopefully a unique name count = 0 for letter in letters: m = hashlib.md5() im3 = im2.crop(( letter[0] , 0, letter[1],im2.size[1] )) m.update("%s%s"%(time.time(),count)) im3.save("./%s.gif"%(m.hexdigest())) count += 1 


рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рдЙрд╕реА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдорд┐рд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдИ рдХреИрдкреНрдЪрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрд╢ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреИрдкреНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:



рдЖрдк рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рд╣реИ рдЬреЛ рдЫрд╡рд┐ (рдкреНрд░рддреАрдХ рдпрд╛ рд╕рдВрдЦреНрдпрд╛) рдкрд░ рд╣реИред

рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛


рдЕрдВрддрд┐рдо рдЪрд░рдгред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рда рдирд┐рд╖реНрдХрд░реНрд╖рдг, рдЪрд░рд┐рддреНрд░ рдирд┐рд╖реНрдХрд░реНрд╖рдг, рдорд╛рдиреНрдпрддрд╛ рддрдХрдиреАрдХ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рд╣реИред

рд╣рдореЗрдВ рдХреИрдкреНрдЪрд╛ рдХреА рдПрдХ рдЫрд╡рд┐ рдорд┐рд▓рддреА рд╣реИ, рдкрд╛рда рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рд╡рд░реНрдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреИрдкреНрдЪрд╛ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ:

 def buildvector(im): d1 = {} count = 0 for i in im.getdata(): d1[count] = i count += 1 return d1 v = VectorCompare() iconset = ['0','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t',' u','v','w','x','y','z'] imageset = [] for letter in iconset: for img in os.listdir('./iconset/%s/'%(letter)): temp = [] if img != "Thumbs.db": temp.append(buildvector(Image.open("./iconset/%s/%s"%(letter,img)))) imageset.append({letter:temp}) 


рдФрд░ рдлрд┐рд░ рд╕рд╛рд░рд╛ рдЬрд╛рджреВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХрд╣рд╛рдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд╡реЗрдХреНрдЯрд░ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪреЗрдВред рдлрд┐рд░ рд╣рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред

 count = 0 for letter in letters: m = hashlib.md5() im3 = im2.crop(( letter[0] , 0, letter[1],im2.size[1] )) guess = [] for image in imageset: for x,y in image.iteritems(): if len(y) != 0: guess.append( ( v.relation(y[0],buildvector(im3)),x) ) guess.sort(reverse=True) print "",guess[0] count += 1 


рдирд┐рд╖реНрдХрд░реНрд╖


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдо рдЕрдкрдиреА рдЪрдорддреНрдХрд╛рд░ рдорд╢реАрди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ captcha.gif ред рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо: 7s9t9j

 python crack.py (0.96376811594202894, '7') (0.96234028545977002, 's') (0.9286884286888929, '9') (0.98350370609844473, 't') (0.96751165072506273, '9') (0.96989711688772628, 'j') 


рдпрд╣рд╛рдВ рд╣рдо рдХрдерд┐рдд рдкреНрд░рддреАрдХ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреА рдбрд┐рдЧреНрд░реА рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ (0 рд╕реЗ 1 рддрдХ)ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдлрд▓ рд╣реБрдП!

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЯреЗрд╕реНрдЯ рдХреИрдкреНрдЪрд╛ рдкрд░ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдЧрднрдЧ 22% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рдлрд▓ рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛ (рдореБрдЭреЗ 28.5 рдорд┐рд▓рд╛, рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред )ред

 python crack_test.py Correct Guesses - 11.0 Wrong Guesses - 37.0 Percentage Correct - 22.9166666667 Percentage Wrong - 77.0833333333 


рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рдЕрдВрдХреЛрдВ рдХреА рдЧрд▓рдд рдкрд╣рдЪрд╛рди "0" рдФрд░ "рдУ" рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВред рдХреБрдЫ рднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдЙрдиреНрд╣реЗрдВ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЕрднреА рднреА рдкрд╛рддреНрд░реЛрдВ рдореЗрдВ рдЯреВрдЯрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдордзреНрдп рдЬрдореАрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдЦреЛрдЬрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде, рд╣рдо рдРрд╕реЗ рд╕рдордп рдореЗрдВ рд╣рд░ рдкрд╛рдВрдЪрд╡реЗрдВ рдХреИрдкреНрдЪрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

рдПрдХ рдХреЛрд░ 2 рдбреБрдУ E6550 рдкрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

 real 0m5.750s user 0m0.015s sys 0m0.000s 


рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗред рдореБрдЭреЗ рджреЛрд╣рд░реЗ рдХреЛрд░ T4400 рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ:

 real 0m0.176s user 0m0.160s sys 0m0.012s 


рд╣рдорд╛рд░реА рд╕реВрдЪреА рдореЗрдВ 48 рдХреИрдкреНрдЪрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдпрд╣ рдирд┐рдореНрди рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 0.12 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА 22% рд╕рдлрд▓рддрд╛ рджрд░ рдХреЗ рд╕рд╛рде, рд╣рдо рдкреНрд░рддрд┐ рджрд┐рди рд▓рдЧрднрдЧ 432,000 рдХреИрдкреНрдЪрд╛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ 95,040 рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЖрдк рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рд╡рд╣ рд╕рдм рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЦрддрд░рдирд╛рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд╛рдлреА рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЦреБрдж рдХреЛ рдХреИрдкреНрдЪрд╛ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдмрд╣реБрдд рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдмрд╕ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред рдЦреБрдж рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред

Source: https://habr.com/ru/post/In149091/


All Articles