рд╣рд╛рдп рд╕рдм!
рд╣рд░ рд╡реНрдпрдХреНрддрд┐ рдЖрдЬрдХрд▓ рдмрд╛рд░рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ред рдЬрдм рд╣рдо рд╕реНрдЯреЛрд░ рдореЗрдВ рдХрд┐рд░рд╛рдиреЗ рдХрд╛ рд╕рд╛рдорд╛рди рдЦрд░реАрдж рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрд╛рд░рдХреЛрдб рд╕реЗ рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рднреА рдЧреЛрджрд╛рдореЛрдВ, рдбрд╛рдХ рдкрд╛рд░реНрд╕рд▓ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдорд╛рд▓ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдмрд╛рд░рдХреЛрдб рдХреНрдпрд╛ 'рдЕрдВрджрд░' рд╣реИ, рдФрд░ рдЗрд╕ рдЫрд╡рд┐ рдкрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ?

рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдмрд╛рд░ рдбрд┐рдХреЛрдбрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рджреЗрддрд╛ рд╣реИред
рдкрд░рд┐рдЪрдп
рдмрд╛рд░рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд░рд╣рд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рди рдмрдирд╛рдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ 50 рдХреЗ рджрд╢рдХ рдореЗрдВ рдХрд┐рдП рдЧрдП рдереЗ, рдПрдХ рдХреЛрдб рд░реАрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреЗрдЯреЗрдВрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреЗрдВрд╕рд┐рд▓реНрд╡реЗрдирд┐рдпрд╛ рд░реЗрд▓рдорд╛рд░реНрдЧ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд┐рдб рдХреЛрд▓рд┐рдиреНрд╕ рдиреЗ рдХрд╛рд░реЛрдВ рдХреА рдЫрдБрдЯрд╛рдИ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╕реНрдкрд╖реНрдЯ рдерд╛ - рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рдХреА рдкрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ рдлреЛрдЯреЛ рд╕реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝реЗрдВред 1962 рдореЗрдВ рдЕрдореЗрд░рд┐рдХрди рд░реЗрд▓рд░реЛрдбреНрд╕ рдПрд╕реЛрд╕рд┐рдПрд╢рди рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдПрдХ рдорд╛рдирдХ рдмрди рдЧрдПред (
KarTrak рд╕рд┐рд╕реНрдЯрдо)ред 1968 рдореЗрдВ рджреАрдкрдХ рдХреЛ рдПрдХ рд▓реЗрдЬрд░ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдиреЗ рд╕рдЯреАрдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдкрд╛рдардХ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред 1973 рдореЗрдВ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдЙрддреНрдкрд╛рдж рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ 1974 рдореЗрдВ рдкрд╣рд▓рд╛ рдХрд┐рд░рд╛рдиреЗ рдХрд╛ рдЙрддреНрдкрд╛рдж (рдПрдХ Wrigley рдХреА рдЪрдмрд╛рдиреЗ рд╡рд╛рд▓реА рдЧрдо - рдпрд╣ рд╕рдВрдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдЕрдореЗрд░рд┐рдХрд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдерд╛) рдмреЗрдЪреА рдЧрдИ рдереАред 1984 рдореЗрдВ рд╕рднреА рджреБрдХрд╛рдиреЛрдВ рдХреЗ рддреАрд╕рд░реЗ рднрд╛рдЧ рдиреЗ рдмрд╛рд░рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдиреНрдп рджреЗрд╢реЛрдВ рдореЗрдВ рдпрд╣ рдмрд╛рдж рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ред
рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рд░рдХреЛрдб рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "12345678" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрд╕ рддрд░реАрдХреЗ рд╕реЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдирд╣реАрдВ):

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

1 - рдЦрд╛рд▓реА рд╕реНрдерд╛рди, рдХреЛрдб рдкреНрд░рд╛рд░рдВрдн рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХред
2 - рдкреНрд░рддреАрдХ рд╢реБрд░реВ рдХрд░реЛред рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЛрдб -128 рдЙрдкрд▓рдмреНрдз рд╣реИрдВ (рдП, рдмреА рдФрд░ рд╕реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдкреНрд░рд╛рд░рдВрдн рдкреНрд░рддреАрдХ рдХреНрд░рдорд╢рдГ 11010000100, 11010010000 рдпрд╛ 11010011100 рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЯреЗрдмрд▓ рдЕрд▓рдЧ рд╣реИрдВ (
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб_128 рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ )ред
3 - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдпреБрдХреНрдд рдХреЛрдб рд╣реАред
4 - рдЪреЗрдХ рд░рд╛рд╢рд┐ред
5 - рд╕реНрдЯреЙрдк рд╕рд┐рдВрдмрд▓, рдХреЛрдб -128 рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ 1100011101011ред
6 (1) - рдЦрд╛рд▓реА рд╕реНрдерд╛рдиред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдмрд┐рдЯреНрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИрдВред рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ - рдЕрдЧрд░ рд╣рдо рд╕рдмрд╕реЗ рдкрддрд▓реА рд░реЗрдЦрд╛ рдХреА рдЪреМрдбрд╝рд╛рдИ "1" рддрдХ рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ, рддреЛ рджреЛрд╣рд░реА рдЪреМрдбрд╝рд╛рдИ рд░реЗрдЦрд╛ "11" рд╣реЛрдЧреА, рдЯреНрд░рд┐рдкрд▓ рдЪреМрдбрд╝рд╛рдИ рд░реЗрдЦрд╛ "111" рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдХреНрд░рдорд╢рдГ "0", "00" рдпрд╛ "000" рд╣реЛрдЧрд╛, рдЙрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ред рдЬреЛ рд▓реЛрдЧ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдкрд░ рдкреНрд░рд╛рд░рдВрдн рдЕрдиреБрдХреНрд░рдо рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирд┐рдпрдо рдХрд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдм рд╣рдо рдХреЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд┐рдЯ рдХреНрд░рдо
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╖реНрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдЪреМрдбрд╝рд╛рдИ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдмреАрдЪ рд╕реЗ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ, рдЗрд╕реЗ b / w рд░рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реИред
from PIL import Image import numpy as np import matplotlib.pyplot as plt image_path = "barcode.jpg" img = Image.open(image_path) width, height = img.size basewidth = 4*width img = img.resize((basewidth, height), Image.ANTIALIAS) hor_line_bw = img.crop((0, int(height/2), basewidth, int(height/2) + 1)).convert('L') hor_data = np.asarray(hor_line_bw, dtype="int32")[0]
рдмрд╛рд░рдХреЛрдб рдХрд╛рд▓реА рд░реЗрдЦрд╛ рдкрд░ "1" рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди RGB рдореЗрдВ рдХрд╛рд▓рд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, 0 рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░рдгреА рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдФрд╕рдд рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рднреА рдХрд░реЗрдВрдЧреЗред
hor_data = 255 - hor_data avg = np.average(hor_data) plt.plot(hor_data) plt.show()
рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдПрдВ рдХрд┐ рдмрд╛рд░рдХреЛрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рдЕрдм рд╣рдореЗрдВ рдПрдХ 'рдмрд┐рдЯ' рдХреА рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрдХреНрд░рдо рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ, рдФрд╕рдд рд▓рд╛рдЗрди рдХреНрд░реЙрд╕рд┐рдВрдЧ рдХреЗ рдкрджреЛрдВ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реБрдПред
pos1, pos2 = -1, -1 bits = "" for p in range(basewidth - 2): if hor_data[p] < avg and hor_data[p + 1] > avg: bits += "1" if pos1 == -1: pos1 = p if bits == "101": pos2 = p break if hor_data[p] > avg and hor_data[p + 1] < avg: bits += "0" bit_width = int((pos2 - pos1)/3)
рд╣рдо рдХреЗрд╡рд▓ рдФрд╕рдд рд▓рд╛рдЗрди рдХреНрд░реЙрд╕рд┐рдВрдЧ рдХреЛ рдмрдЪрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб "1101" рдХреЛ "101" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХреА рдкрд┐рдХреНрд╕реЗрд▓ рдЪреМрдбрд╝рд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЕрдм рдбреАрдХреЛрдбрд┐рдВрдЧ рдЦреБрдж рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рд╣рд░ рдФрд╕рдд рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╕рд╣реА рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдПрдВрдЧреА (рдХреЛрдб рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЭреБрдХ рд╕рдХрддрд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдХреЛ рдЧреЛрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
bits = "" for p in range(basewidth - 2): if hor_data[p] > avg and hor_data[p + 1] < avg: interval = p - pos1 cnt = interval/bit_width bits += "1"*int(round(cnt)) pos1 = p if hor_data[p] < avg and hor_data[p + 1] > avg: interval = p - pos1 cnt = interval/bit_width bits += "0"*int(round(cnt)) pos1 = p
рд╢рд╛рдпрдж рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ, рдкрд╛рдардХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд░ рд╕рдм рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдорд┐рд▓реЗрдЧрд╛:
11010010000110001010001000110100010001101110100011011101000111011011
01100110011000101000101000110001000101100011000101110110011011001111
00010101100011101011
рдбрд┐рдХреЛрдбрд┐рдВрдЧ
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рдХреЛрдб -128 рдореЗрдВ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ 11-рдмрд┐рдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ - рдП, рдмреА рдпрд╛ рд╕реА, рдпрд╣ 00 рд╕реЗ 99 рддрдХ рдЕрдХреНрд╖рд░ рдпрд╛ рдЕрдВрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреБрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд 11010010000 рд╣реИ, рдЬреЛ рдПрдХ "рдХреЛрдб рдмреА" рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдореИрдВ рд╕рднреА рдХреЛрдб рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкреГрд╖реНрда рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ред рдЗрд╕ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рднреА рдкрд╛рдпрдерди рдкрд░ рдХреА рдЧрдИ рдереА (рд╕рдВрдХреЗрдд - рдЙрддреНрдкрд╛рджрди рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рди рдХрд░реЗрдВ)ред
CODE128_CHART = """ 0 _ _ 00 32 S 11011001100 212222 1 ! ! 01 33 ! 11001101100 222122 2 " " 02 34 " 11001100110 222221 3 # # 03 35 # 10010011000 121223 ... 93 GS } 93 125 } 10100011110 111341 94 RS ~ 94 126 ~ 10001011110 131141 103 Start Start A 208 SCA 11010000100 211412 104 Start Start B 209 SCB 11010010000 211214 105 Start Start C 210 SCC 11010011100 211232 106 Stop Stop - - - 11000111010 233111""".split() SYMBOLS = [value for value in CODE128_CHART[6::8]] VALUESB = [value for value in CODE128_CHART[2::8]] CODE128B = dict(zip(SYMBOLS, VALUESB))
рдЕрдВрддрд┐рдо рднрд╛рдЧ рдЖрд╕рд╛рди рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, 11-рдмрд┐рдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ:
sym_len = 11 symbols = [bits[i:i+sym_len] for i in range(0, len(bits), sym_len)]
рдЕрдВрдд рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ:
str_out = "" for sym in symbols: if CODE128A[sym] == 'Start': continue if CODE128A[sym] == 'Stop': break str_out += CODE128A[sym] print(" ", sym, CODE128A[sym]) print("Str:", str_out)
рдореИрдВ рдпрд╣рд╛рдВ рд╢реАрд░реНрд╖ рдЫрд╡рд┐ рд╕реЗ рдбрд┐рдХреЛрдб рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛, рдЗрд╕реЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрдорд╡рд░реНрдХ рд╣реЛрдиреЗ рджреЗрдВ (рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдзреЛрдЦрд╛ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ :)ред
рдЗрд╕ рдХреЛрдб рдореЗрдВ рд╕реАрдЖрд░рд╕реА рдЪреЗрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрдХреАрди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреЗрд╢реЗрд╡рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдкрд╛рдЗрдЬрд╝рдмрд╛рд░ ред рдЫрд╡рд┐ рдХреЛ рдбреАрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреА 4 рд▓рд╛рдЗрдиреЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ:
from pyzbar.pyzbar import decode img = Image.open(image_path) decode = decode(img) print(decode)
(рдкрд╣рд▓реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ "рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдкрд╛рдЗрдЬрд╝рдмрд╛рд░" рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛)
рдЬреЛрдбрд╝ : рд╕рд╛рдЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
vinograd19 рдиреЗ рдмрд╛рд░рдХреЛрдб рдЪреЗрдХ рдпреЛрдЧ рдЧрдгрдирд╛ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЯрд┐рдкреНрдкрдгреА рднреЗрдЬреАред
рдЪреЗрдХ рдирдВрдмрд░ рдХреА рдЧрдгрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдпрд╣ рд╡рд┐рдХрд╛рд╕рд╡рд╛рдж рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рд╣реИред
рдЧрд▓рдд рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рд░рд╛рд╢рд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдмрд╛рд░рдХреЛрдб 1234 рдерд╛, рдФрд░ 7234 рдХреЗ рд░реВрдк рдореЗрдВ рдбреАрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдореЗрдВ 1 рд╕реЗ 7. рдХреА рдЬрдЧрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рддреНрдпрд╛рдкрди рд╕рд╣реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо 90% рдХреЛрдб рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред
рдкрд╣рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг: рдЪрд▓реЛ рдмрд╕ рдпреЛрдЧ рд▓реЗрддреЗ рд╣реИрдВ, рд╢реЗрд╖ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд░реВрдк рдореЗрдВ 0 рд╣реИред рдкрд╣рд▓реЗ рдкреНрд░рддреАрдХреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рдЕрдВрдХ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдХрд┐ рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдпреЛрдЧ 10. рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдпрджрд┐ рд░рд╛рд╢рд┐ 10 рд╕реЗ рд╡рд┐рднрд╛рдЬреНрдп рдирд╣реАрдВ рд╣реИ - рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдЧрд▓рдд рд╣реИ, рдФрд░ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб 1234 рд╡реИрдз рд╣реИ - 1 + 2 + 3 + 4 = 10. рдХреЛрдб 1216 - рднреА рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди 1218 рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднреА рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдФрд░ рдмреБрд░рд╛ рдорд╛рдорд▓рд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛ - рдпрджрд┐ рджреЛ рдЕрдВрдХреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдЪреЗрдХ рд░рд╛рд╢рд┐ рдЕрднреА рднреА рд╕рд╣реА рд╣реЛрдЧреА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЦрд░рд╛рдм рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдмрд╛рд░рдХреЛрдб 1234 рдХреЛ 2134 рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЪреЗрдХ рд░рд╛рд╢рд┐ рд╕рдорд╛рди рд╣реЛрдЧреАред рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛, рдХрд┐ рдПрдХ рдЧрд▓рдд рдЕрдВрдХ рдХреНрд░рдо рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рдерд╛, рдЕрдЧрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рддреЗрдЬреА рд╕реЗ рдЕрдВрдХреЛрдВ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдЪреЗрдХрд╕рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ - рджреЛ рдмрд╛рд░ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░, рдпрджрд┐ рдЖрджреЗрд╢ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдпреЛрдЧ рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб 2364 рд╡реИрдз рд╣реИ (2 + 3 * 2 + 6 + 4 * 2 = 20), рд▓реЗрдХрд┐рди рдХреЛрдб 3264 рдирд╣реАрдВ рд╣реИ (3 + 2 * 2 + 6 + 4 * 2 = 19)ред рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИред рдХреБрдЫ рдХреАрдмреЛрд░реНрдб рд╣реИрдВ, рдЬрд┐рдирдХреА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ 10 рдЪрд╛рдмрд┐рдпрд╛рдБ рд╣реИрдВ, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ 12345 рд╣реИ рдФрд░ рджреВрд╕рд░реА 67890 рд╣реИред рдпрджрд┐ "1" рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "2" рдЯрд╛рдЗрдк рдХрд░реЗрдЧрд╛, рддреЛ рдЪреЗрдХрд╕рдо рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "1" рдХреЗ рдмрдЬрд╛рдп "6" рджрд░реНрдЬ рдХрд░реЗрдЧрд╛ - рдЪреЗрдХ рд░рд╛рд╢рд┐ рдХрднреА-рдХрднреА рд╕рд╣реА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреА рд╡рдЬрд╣ рдпрд╣ рд╣реИ рдХрд┐ 6 = 1 + 5, рдФрд░ рдпрджрд┐ рдЕрдВрдХ рдореЗрдВ рд╡рд┐рд╖рдо рд╕реНрдерд╛рди рд╣реИ, рддреЛ рд╣рдореЗрдВ 2 * 6 = 2 * 1 + 2 * 5 рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ - рд░рд╛рд╢рд┐ рдореЗрдВ 10 рд╕реЗ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "7" рджрд░реНрдЬ рдХрд░реЗрдЧрд╛ "3" рдХреЗ рдмрдЬрд╛рдп "2", "8" рдФрд░ рдЗрд╕реА рддрд░рд╣ "ред
рддреАрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рд░рд╛рд╢рд┐ рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ ... 3 рдмрд╛рд░ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб 1234565 - рдорд╛рдиреНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 1 + 2 * 3 + 3 + 4 * 3 + 5 + 6 * 3 +5 = 50ред
рдпрд╣ рд╡рд┐рдзрд┐ EAN13 рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдмрди рдЧрдИ, рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде: рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ 13 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬрд╣рд╛рдВ 13 рд╡рд╛рдВ рдЕрдВрдХ рд╣реИ - рдЪреЗрдХ рд░рд╛рд╢рд┐ рд╣реИред рд╡рд┐рд╖рдо рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕рдВрдЦреНрдпрд╛ рддреАрди рдмрд╛рд░ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдмрд╛рд░ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рднреАредрд╡реИрд╕реЗ, EAN-13 рдХреЛрдб рдЯреНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рд╢реЙрдкрд┐рдВрдЧ рдореЙрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реЛрдЧ рдЗрд╕реЗ рдЕрдиреНрдп рдХреЛрдб рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдмрд┐рдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛрдб -128 рдХреЗ рд╕рдорд╛рди рд╣реИ,
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдмрд╛рд░рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдЖрд╕рд╛рди рдЪреАрдЬ, рдХреБрдЫ рд╢рд╛рдВрдд рд╕рд╛рдорд╛рди рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЫреЛрдЯрд╛ рдЬреАрд╡рдирдХрд╛рд▓, рдЬреЛ рдЗрд╕ рдЬрдЧрд╣ рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдзреИрд░реНрдп рд░рдЦрддреЗ рдереЗ - рдмрд╛рд░рдХреЛрдб рдХреЗ рддрд╣рдд рдкрд╛рда рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рд░рдХреЛрдб рдбреЗрдЯрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЛрдб рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдЗрд╕рдХреА рд╕реНрдХреИрдирд░ рджреНрд╡рд╛рд░рд╛ рдкрдардиреАрдп рдирд╣реАрдВ рд╣реИред рддреЛ рдмрд╛рд░рдХреЛрдб рдХрдВрдЯреЗрдВрдЯ рдХреЛ рдЬрд╛рдирдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдмрд╕ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдкрдврд╝реЗрдВред
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред