Optical Character Recognition (OCR) рдХреНрдпреЛрдВ рд╕реАрдЦреЗрдВ?
рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рда рдирд┐рдХрд╛рд▓рдирд╛ рдмрд╣реБрдд рдердХрд╛рдК рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, OCR (Optical Character Recognition) рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдРрд╕реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдФрд░ рдЦреЛрдЬ рдпреЛрдЧреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЬрд┐рди рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
рднреМрддрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдбрд┐рдЬрд┐рдЯрд▓ рдмрдирд╛рдирд╛ : рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ, PDF, рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдФрд░ рдЦреЛрдЬ рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓реЗрдВред
рдбреЗрдЯрд╛ рдПрдВрдЯреНрд░реА рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди : рдлрд╝реЙрд░реНрдо, рдЪрд╛рд▓рд╛рди, рд░рд╕реАрджреЗрдВ рдФрд░ рдЕрдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдХрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рдХреЛ рд╕реНрд╡рддрдГ рднрд░реЗрдВред
рд╕реБрд▓рднрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ : рджреГрд╖реНрдЯрд┐-рдмрд╛рдзрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рддрд╛рдмреЛрдВ, рдореЗрдиреВ рдпрд╛ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдПрдВред рдлрд┐рд░ рдЯреЗрдХреНрд╕реНрдЯ-рдЯреВ-рд╕реНрдкреАрдЪ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЬрд╝реЛрд░ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рд╣рди : рд╕реБрд░рдХреНрд╖рд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕рдВрдХреЗрддреЛрдВ рдФрд░ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд▓реЗрдЯреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВред
рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ Tesseract OCR рдЗрдВрдЬрди рдФрд░ рдЙрд╕рдХреЗ Python API - PyTesseract рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ред рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ OCR рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВред
Python рдореЗрдВ рд╢реАрд░реНрд╖ рдУрдкрди-рд╕реЛрд░реНрд╕ OCR рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рдЪреВрдВрдХрд┐ OCR рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдирд┐рд░рдВрддрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХрдИ рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЙрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдЯреАрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реБрдИ рд╣реИрдВред
Tesseract
Tesseract OCR рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдСрдкреНрдЯрд┐рдХрд▓ рдХреИрд░реЗрдХреНрдЯрд░ рд░рд┐рдХреЙрдЧреНрдирд┐рд╢рди рдЗрдВрдЬрди рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдЕрдиреНрдп рдЯреВрд▓реНрд╕ рдХреА рддрд░рд╣, Tesseract рдЯреЗрдХреНрд╕реНрдЯ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЗрдХрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдлрд╛рдпрджреЗ
рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдФрд░ рдкрд░рд┐рдкрдХреНрд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдп
100 рд╕реЗ рдЕрдзрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди
рдореБрдлрд╝реНрдд рдФрд░ рдУрдкрди-рд╕реЛрд░реНрд╕
рдиреБрдХрд╕рд╛рди
рдХреБрдЫ рдбреАрдк-рд▓рд░реНрдирд┐рдВрдЧ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдЯреАрдХрддрд╛ рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИ
рд╕реАрдорд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк
Easy OCR
EasyOCR рдПрдХ Python рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдЖрд╕рд╛рди Optical Character Recognition (OCR) рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрдкрдиреА рдирд╛рдорд╛рдиреБрд╕рд╛рд░ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдлрд╛рдпрджреЗ
рдпреВрдЬрд╝рд░-рдлреНрд░реЗрдВрдбрд▓реА рдФрд░ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди
рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛
рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рддрддреНрдХрд╛рд▓ рд╕рдорд░реНрдерди
рдиреБрдХрд╕рд╛рди
рдкреНрд░реА-рдЯреНрд░реЗрдВрдб рдореЙрдбрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛, рдЬрд┐рдирдХрд╛ рдЖрдХрд╛рд░ рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП Tesseract рд╕реЗ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
Keras OCR
Keras-OCR, Keras (рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ) рдкрд░ рдЖрдзрд╛рд░рд┐рдд Python рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ OCR рдореЙрдбрд▓реНрд╕ рдФрд░ рдирдП OCR рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдб-рдЯреВ-рдПрдВрдб рдЯреНрд░реЗрдирд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдлрд╛рдпрджреЗ
рдбреАрдк-рд▓рд░реНрдирд┐рдВрдЧ рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛ рджреЗрддрд╛ рд╣реИ
рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрдмрд▓ рдореЙрдбрд▓ рдЪрдпрди рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг
рдЬрдЯрд┐рд▓ рд▓реЗрдЖрдЙрдЯ рдпрд╛ рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдиреБрдХрд╕рд╛рди
рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП GPU рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╕реАрдЦрдиреЗ рдХреА рдврд▓рд╛рди рдЕрдзрд┐рдХ
рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣рд╛рдБ рдЙрдирдХреЗ рдЕрдВрддрд░, рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдиреЗ рд╡рд╛рд▓реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:
рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо
рдлрд╛рдпрджрд╛
рдиреБрдХрд╕рд╛рди
Tesseract (pytesseract)
рдкрд░рд┐рдкрдХреНрд╡, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА, рд╡рд┐рд╕реНрддреГрдд рд╕рдорд░реНрдерди
рдзреАрдорд╛, рдЬрдЯрд┐рд▓ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдХрдо рд╕рдЯреАрдХрддрд╛
EasyOCR
рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд░рд▓, рдХрдИ рдореЙрдбрд▓
рдХрдо рд╕рдЯреАрдХрддрд╛, рд╕реАрдорд┐рдд рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди
Keras-OCR
рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛, рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрдмрд▓
GPU рдЖрд╡рд╢реНрдпрдХ, рд╕реАрдЦрдиреЗ рдХреА рдврд▓рд╛рди рдЕрдзрд┐рдХ
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо PyTesseract рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ, рдЬреЛ Tesseract рдХрд╛ Python API рд╣реИред рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдП, рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдБ, рдФрд░ рдПрдХ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдХреЗрд╕ рд╕реНрдЯрдбреА рдХреИрд╕реЗ рдХреА рдЬрд╛рдПред
PyTesseract рдФрд░ OpenCV рдХреЗ рд╕рд╛рде OCR: рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди
PyTesseract рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Tesseract рдЗрдВрдЬрди рдХреЗ рдКрдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЕрд▓рдЧ CLI рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╣реИред pytesseract рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдпрд╣ рдЗрдВрдЬрди рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреАрдЪреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рджрд┐рдП рдЧрдП рд╣реИрдВред
Ubuntu рдпрд╛ WSL2 (рдореЗрд░рд╛ рдЪреБрдирд╛рд╡) рдХреЗ рд▓рд┐рдП:
$ sudo apt update & & sudo apt upgrade
$ sudo apt install tesseract- ocr
$ sudo apt install libtesseract- dev
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
Mac рдХреЗ рд▓рд┐рдП (Homebrew рдХреЗ рд╕рд╛рде):
$ brew install tesseract
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
Windows рдХреЗ рд▓рд┐рдП, рдЗрд╕ GitHub рдкреЗрдЬ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдирдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдмрдирд╛рдПрдБред рдореИрдВ Conda рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛:
$ conda create - n ocr python== 3.9 - y
$ conda activate ocr
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдлрд┐рд░, рдЖрдкрдХреЛ OCR рдХреЗ рд▓рд┐рдП pytesseract рдФрд░ рдЗрдореЗрдЬ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП opencv рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
$ pip install pytesseract
$ pip install opencv- python
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдпрджрд┐ рдЖрдк рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ Jupyter рдореЗрдВ рдлреЙрд▓реЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрдиреНрд╣реАрдВ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдЙрд╕реА рдЯрд░реНрдорд┐рдирд▓ рд╕рддреНрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдБ рддрд╛рдХрд┐ рдЖрдкрдХрд╛ рдирдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдПрдХ рдХрд░реНрдиреЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рдП:
$ pip install ipykernel
$ ipython kernel install - - user - - name= ocr
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЕрдм, рд╣рдо рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмреЗрд╕рд┐рдХ рдЙрдкрдпреЛрдЧ
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдпрд╛рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
import cv2
import pytesseract
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдирд┐рдореНрди рдЫрд╡рд┐ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдкрдврд╝рдирд╛ рд╣реИ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрдореЗрдЬ рдкрд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ cv2.imread рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрддреЗ рд╣реИрдВ:
easy_text_path = "images/easy_text.png"
easy_img = cv2. imread( easy_text_path)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдлрд┐рд░, рд▓реЛрдб рдХреА рдЧрдИ рдЗрдореЗрдЬ рдХреЛ pytesseract рдХреЗ image_to_string рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рдХреЗ рдЯреЗрдХрзНрж╕реНрдЯ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:
text = pytesseract. image_to_string( easy_img)
print ( text)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
This text is
easy to extract.
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдмрд┐рд▓реНрдХреБрд▓ рдЗрддрдирд╛ рд╣реА рдЖрд╕рд╛рди! рдЖрдЗрдП рдЬреЛ рд╣рдордиреЗ рдЕрднреА рдХрд┐рдпрд╛ рдЙрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓ рджреЗрдВ:
def image_to_text ( input_path) :
"""
A function to read text from images.
"""
img = cv2. imread( input_path)
text = pytesseract. image_to_string( img)
return text. strip( )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЖрдЗрдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЕрдзрд┐рдХ рдХрдард┐рди рдЫрд╡рд┐ рдкрд░ рдХрд░реЗрдВ:
рдпрд╣ рдЫрд╡рд┐ рдЕрдзрд┐рдХ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рд╣реИред
medium_text_path = "images/medium_text.png"
extracted_text = image_to_text( medium_text_path)
print ( extracted_text)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
Home > Tutorials ┬╗ Data Engineering
Snowflake Tutorial For Beginners:
From Architecture to Running
Databases
Learn the fundamentals of cloud data warehouse management using
Snowflake. Snowflake is a cloud-based platform that offers significant
benefits for companies wanting to extract as much insight from their data as
quickly and efficiently as possible.
Jan 2024 - 12 min read
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рд╣рдорд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред рдЗрд╕рдиреЗ рдПрдХ рдбреЙрдЯ рдФрд░ тАЬ>тАЭ рдЪрд┐рд╣реНрди рдореЗрдВ рднреНрд░рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред
рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛
OCR рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░рд┐рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛ рд╣реИред рдпрд╣ рдХреНрд░рд┐рдпрд╛ PyTesseract рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд▓реЛрдб рдХреА рдЧрдИ рдЗрдореЗрдЬ рдХреЛ image_to_data рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:
from pytesseract import Output
data = pytesseract. image_to_data( easy_img, output_type= Output. DICT)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
Output.DICT рднрд╛рдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрдореЗрдЬ рд╡рд┐рд╡рд░рдг рдПрдХ рдбрд┐рдХреНрд╢рдирд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯреЗред рдЖрдЗрдП рдЕрдВрджрд░ рдЭрд╛рдБрдХрддреЗ рд╣реИрдВ:
dataрд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
{'level': [1, 2, 3, 4, 5, 5, 5, 4, 5, 5, 5],
'page_num': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'block_num': [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'par_num': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'line_num': [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2],
'word_num': [0, 0, 0, 0, 1, 2, 3, 0, 1, 2, 3],
'left': [0, 41, 41, 236, 236, 734, 1242, 41, 41, 534, 841],
'top': [0, 68, 68, 68, 68, 80, 68, 284, 309, 284, 284],
'width': [1658, 1550, 1550, 1179, 380, 383, 173, 1550, 381, 184, 750],
'height': [469, 371, 371, 128, 128, 116, 128, 155, 130, 117, 117],
'conf': [-1, -1, -1, -1, 96, 95, 95, -1, 96, 96, 96],
'text': ['', '', '', '', 'This', 'text', 'is', '', 'easy', 'to', 'extract.']}
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рдЗрдореЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд-рд╕реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдкрд╣рд▓реЗ, conf рдФрд░ text рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рджреЛрдиреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ 11 рд╣реИ:
len ( data[ "text" ] ) рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
11рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ pytesseract рдиреЗ 11 рдмреЙрдХреНрд╕ рдмрдирд╛рдПред conf рдХрд╛ рдЕрд░реНрде confidence рд╣реИред рдпрджрд┐ рдпрд╣ -1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдмреЙрдХреНрд╕ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢рдмреНрджреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЪрд╛рд░ width рдФрд░ height рдорд╛рдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ рд╡реЗ рдмрд╛рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдбрд╝реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмреЙрдХреНрд╕ рдкреВрд░реЗ рдордзреНрдп рдЯреЗрдХреНрд╕реНрдЯ, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдФрд░ рдлрд┐рд░ рдкреВрд░реА рдЗрдореЗрдЬ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
рд╕рд╛рде рд╣реА:
left рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЗ рдКрдкрд░реА-рдмрд╛рдПрдБ рдХреЛрдиреЗ рд╕реЗ рдЗрдореЗрдЬ рдХреА рдмрд╛рдПрдБ рд╕реАрдорд╛ рддрдХ рдХреА рджреВрд░реА рд╣реИред
top рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЗ рдКрдкрд░реА-рдмрд╛рдПрдБ рдХреЛрдиреЗ рд╕реЗ рдЗрдореЗрдЬ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рддрдХ рдХреА рджреВрд░реА рд╣реИред
width рдФрд░ height рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдБрдЪрд╛рдИ рд╣реИрдВред
рдЗрди рдЬрд╛рдирдХрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдЗрдП OpenCV рдореЗрдВ рдЗрдореЗрдЬ рдкрд░ рдмреЙрдХреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ, рд╣рдо рдлрд┐рд░ рд╕реЗ рдбреЗрдЯрд╛ рдФрд░ рдЙрд╕рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:
from pytesseract import Output
data = pytesseract. image_to_data( easy_img, output_type= Output. DICT)
n_boxes = len ( data[ "text" ] )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдлрд┐рд░, рд╣рдо рдорд┐рд▓реЗ рдмреЙрдХреНрд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реВрдк рдмрдирд╛рддреЗ рд╣реИрдВ:
for i in range ( n_boxes) :
if data[ "conf" ] [ i] == - 1 :
continue
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рд▓реВрдк рдХреЗ рдЕрдВрджрд░, рд╣рдо рдПрдХ рд╢рд░реНрдд рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ conf -1 рд╣реЛрдиреЗ рдкрд░ рд╡рд░реНрддрдорд╛рди рдЗрдЯрд░реЗрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИред рдмрдбрд╝реЗ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рд╣рдорд╛рд░реА рдЗрдореЗрдЬ рд╕рд╛рдлрд╝ рд░рд╣реЗрдЧреАред
рдлрд┐рд░, рд╣рдо рд╡рд░реНрддрдорд╛рди рдмреЙрдХреНрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖рдХрд░ рдКрдкрд░реА-рдмрд╛рдПрдБ рдФрд░ рдирд┐рдЪрд▓реЗ-рджрд╛рдПрдБ рдХреЛрдиреЛрдВ рдХреЗ рд╕реНрдерд╛рди:
for i in range ( n_boxes) :
if data[ "conf" ] [ i] == - 1 :
continue
x, y = data[ "left" ] [ i] , data[ "top" ] [ i]
w, h = data[ "width" ] [ i] , data[ "height" ] [ i]
top_left = ( x, y)
bottom_right = ( x + w, y + h)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдХреБрдЫ рдмреЙрдХреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ (рдЬреИрд╕реЗ рд░рдВрдЧ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдореЛрдЯрд╛рдИ) рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА cv2.rectangle рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:
for i in range ( n_boxes) :
if data[ "conf" ] [ i] == - 1 :
continue
x, y = data[ "left" ] [ i] , data[ "top" ] [ i]
w, h = data[ "width" ] [ i] , data[ "height" ] [ i]
top_left = ( x, y)
bottom_right = ( x + w, y + h)
green = ( 0 , 255 , 0 )
thickness = 3
cv2. rectangle(
img= easy_img, pt1= top_left, pt2= bottom_right, color= green, thickness= thickness
)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдореВрд▓ рдЗрдореЗрдЬ рдХреЗ рдКрдкрд░ рдмреЙрдХреНрд╕ рдмрдирд╛ рджреЗрдЧрд╛ред рдЖрдЗрдП рдЗрдореЗрдЬ рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ:
output_image_path = "images/text_with_boxes.jpg"
cv2. imwrite( output_image_path, easy_img)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
Trueрд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдкрд░рд┐рдгрд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ!
рдЕрдм, рдЖрдЗрдП рдЬреЛ рдХреБрдЫ рднреА рд╣рдордиреЗ рдХрд┐рдпрд╛ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
def draw_bounding_boxes ( input_img_path, output_path) :
img = cv2. imread( input_img_path)
data = pytesseract. image_to_data( img, output_type= Output. DICT)
n_boxes = len ( data[ "text" ] )
for i in range ( n_boxes) :
if data[ "conf" ] [ i] == - 1 :
continue
x, y = data[ "left" ] [ i] , data[ "top" ] [ i]
w, h = data[ "width" ] [ i] , data[ "height" ] [ i]
top_left = ( x, y)
bottom_right = ( x + w, y + h)
green = ( 0 , 255 , 0 )
thickness = 1
cv2. rectangle( img, top_left, bottom_right, green, thickness)
cv2. imwrite( output_path, img)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдФрд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдордзреНрдпрдо-рдХрдард┐рди рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдХрд░реЗрдВ:
output_path = "images/medium_text_with_boxes.png"
draw_bounding_boxes( medium_text_path, output_path)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдХрдард┐рди рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рднреА, рдкрд░рд┐рдгрд╛рдо рдмреЗрд╣рддрд░реАрди рд╣реИ!
рдХреЗрд╕ рд╕реНрдЯрдбреА: Python рдХреЗ рд╕рд╛рде PDF рдлрд╝рд╛рдЗрд▓ рдкрд░ OCR
рдЖрдЗрдП рдПрдХ рдирдореВрдирд╛ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП PDF рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХреЗрд╕ рд╕реНрдЯрдбреА рдХрд░реЗрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП PDF рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдпрд╣:
рдЖрдк PDF рдХреЛ рдореЗрд░реЗ GitHub рдХреЗ рдЗрд╕ рдкреЗрдЬ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛ рдЪрд░рдг pdf2image рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Poppler рдирд╛рдордХ PDF рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ:
Mac рдХреЗ рд▓рд┐рдП:
$ brew install poppler
$ pip install pdf2image
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
Linux рдФрд░ WSL2 рдХреЗ рд▓рд┐рдП:
$ sudo apt- get install - y poppler- utils
$ pip install pdf2image
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
Windows рдХреЗ рд▓рд┐рдП, рдЖрдк PDF2Image рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:
import pathlib
from pathlib import Path
from pdf2image import convert_from_path
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
convert_from_path рдлрд╝рдВрдХреНрд╢рди рджрд┐рдП рдЧрдП PDF рдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХрд┐рд╕реА PDF рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЛ рджреА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡ рдХрд░рддрд╛ рд╣реИ:
def pdf_to_image ( pdf_path, output_folder: str = "." ) :
"""
A function to convert PDF files to images
"""
if not Path( output_folder) . exists( ) :
Path( output_folder) . mkdir( )
pages = convert_from_path( pdf_path, output_folder= output_folder, fmt= "png" )
return pages
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЖрдЗрдП рдЗрд╕реЗ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдЪрд▓рд╛рдПрдБ:
pdf_path = "scanned_document.pdf"
pdf_to_image( pdf_path, output_folder= "documents" )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
[< PIL.PngImagePlugin.PngImageFile image mode = RGB size = 1662x2341> ]
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ PngImageFile рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдЗрдП documents рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
$ ls documents
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
2d8f6922-99c4-4ef4-a475-ef81effe65a3-1.png
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЗрдореЗрдЬ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдЖрдЗрдП рдЗрд╕реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдирд╛рдП рдЧрдП image_to_text рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕реМ рдЕрдХреНрд╖рд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ:
scanned_img_path = "documents/2d8f6922-99c4-4ef4-a475-ef81effe65a3-1.png"
print ( image_to_text( scanned_img_path) [ : 377 ] )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
PEU Business report
New customer's development
and increasing the sale of product
My country economy at this season keeps escaping from Odoba of business though holds a crude oil
high so on unstable element that continues still, and recovering gradually and well.
In the IT industry, there is an influence such as competing intensification in narrowing investment field.
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдпрджрд┐ рд╣рдо рдЯреЗрдХреНрд╕реНрдЯ рдХреА рддреБрд▓рдирд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрд░реЗрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИтАКтАФтАКрдлреЙрд░реНрдореИрдЯрд┐рдВрдЧ рдФрд░ рд╕реНрдкреЗрд╕рд┐рдВрдЧ рдмрдиреА рд╣реБрдИ рд╣реИ, рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдЯреАрдХ рд╣реИред рддреЛ, рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХреИрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ?
рджрд░рдЕрд╕рд▓, рдирд┐рдХрд╛рд▓реЗ рдЧрдП PDF рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдлрд╝реЙрд░реНрдореЗрдЯ рдПрдХ рдФрд░ PDF рдлрд╝рд╛рдЗрд▓ рд╣реА рд╣реИ! PyTesseract рдореЗрдВ image_to_pdf_or_hocr рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рд╡рд╛рд▓реА рдЗрдореЗрдЬ рдХреЛ рдПрдХ рдХрдЪреНрдЪреА, рдЯреЗрдХреНрд╕реНрдЯ-рдЦреЛрдЬрдпреЛрдЧреНрдп PDF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдЕрдкрдиреА рд╕реНрдХреИрди рдХреА рдЧрдИ рдЗрдореЗрдЬ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
raw_pdf = pytesseract. image_to_pdf_or_hocr( scanned_img_path)
with open ( "searchable_pdf.pdf" , "w+b" ) as f:
f. write( bytearray ( raw_pdf) )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдФрд░ searchable_pdf рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╣рд╛рдИрд▓рд╛рдЗрдЯ рдФрд░ рдХреЙрдкреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рд╕рд╛рде рд╣реА, рдореВрд▓ PDF рдХреЗ рд╕рднреА рддрддреНрд╡ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВред
OpenCV рдореЗрдВ OCR рдХреЗ рд▓рд┐рдП рдЗрдореЗрдЬ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрдХрдиреАрдХреЗрдВ
OCR рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рддрд░рд╣ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рднреА рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдЖрдЬ рдХрд╡рд░ рдХреА рдЧрдИ рддрдХрдиреАрдХреЗрдВ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рди рднреА рдХрд░реЗрдВред рдореИрдВ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЗрдореЗрдЬ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдФрд░ Tesseract рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБ рддрд╛рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдорд┐рд▓ рд╕рдХреЗрдВред
OCR рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдЗрдореЗрдЬ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╣реИред рдареАрдХ рд╕реЗ рд╕реНрдХреИрди рдХреА рдЧрдИ, рдкреВрд░реА рддрд░рд╣ рд╕реАрдзреА рдФрд░ рдЙрдЪреНрдЪ-рдХреЙрдиреНрдЯреНрд░рд╛рд╕реНрдЯ (рдХрд╛рд▓рд╛-рд╕рдлреЗрдж) рдЫрд╡рд┐рдпрд╛рдБ рдХрд┐рд╕реА рднреА OCR рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдк рдЯреЗрдХреНрд╕реНрдЯ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рднреА рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреА рдЫрд╡рд┐рдпрд╛рдБ Tesseract рдХреЗ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдорд╛рдирдХреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреАрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЖрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреБрдЫ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
1. рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рд░реВрдкрд╛рдВрддрд░рдг
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░рдВрдЧреАрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЗрд╕рд╕реЗ рд░рдВрдЧ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рдЪрд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВред OpenCV рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
def grayscale ( image) :
"""Converts an image to grayscale.
Args:
image: The input image in BGR format.
Returns:
The grayscale image.
"""
return cv2. cvtColor( image, cv2. COLOR_BGR2GRAY)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
2. рд╢реЛрд░ рдореЗрдВ рдХрдореА
рд╕рднреА рдЫрд╡рд┐рдпрд╛рдБ, рдЦрд╛рд╕рдХрд░ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рдПрдХрджрдо рд╕рд╛рдлрд╝ рдФрд░ рд╕рдорд╛рди рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддреАрдВред рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдБ рдкреБрд░рд╛рдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдБ рдкреГрд╖реНрда рдЙрдореНрд░ рдХреЗ рдХрд╛рд░рдг рдЦрд╝рд░рд╛рдм рд╣реЛ рдЧрдП рд╣реЛрдВред рдпрд╣ рд░рд╣рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рдорд┐рд╕рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯреЗрд╢рди рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП median blur рдЬреИрд╕реЗ рдбрд┐рдиреЙрдЗрдЬрд╝рд┐рдВрдЧ рдлрд╝рд┐рд▓реНрдЯрд░реНрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВред OpenCV рдореЗрдВ, рдЖрдк medianBlur рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
def denoise ( image) :
"""Reduces noise in the image using a median blur filter.
Args:
image: The input grayscale image.
Returns:
The denoised image.
"""
return cv2. medianBlur( image, 5 )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
3. рд╢рд╛рд░реНрдкрдирд┐рдВрдЧ
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрдореЗрдЬ рдХреЛ рд╢рд╛рд░реНрдк рдХрд░рдирд╛ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЙрднрд╛рд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреИрд░реЗрдХреНрдЯрд░ рд░рд┐рдХреЙрдЧреНрдирд┐рд╢рди рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдзреБрдВрдзрд▓реА рдпрд╛ рдХрдо-рд░реЗрдЬрд╝реЛрд▓реНрдпреВрд╢рди рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред OpenCV рдореЗрдВ Laplacian рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╢рд╛рд░реНрдкрдирд┐рдВрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
def sharpen ( image) :
"""Sharpens the image using a Laplacian filter.
Args:
image: The input grayscale image.
Returns:
The sharpened image (be cautious with sharpening).
"""
kernel = np. array( [ [ 0 , - 1 , 0 ] , [ - 1 , 5 , - 1 ] , [ 0 , - 1 , 0 ] ] )
return cv2. filter2D( image, - 1 , kernel)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
4. рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди
рдХреБрдЫ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди (рдЗрдореЗрдЬ рдХреЛ рдХрд╛рд▓рд╛-рд╕рдлреЗрдж рдореЗрдВ рдмрджрд▓рдирд╛) рд▓рд╛рднрдХрд╛рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧреНрд░рднреВрдорд┐ (рдЯреЗрдХреНрд╕реНрдЯ) рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдмреАрдЪ рдЗрд╖реНрдЯрддрдо рдкреГрдердХреНрдХрд░рдг рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрд╢рд╣реЛрд▓реНрдбрд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдпрд╣рд╛рдБ рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реНрдб рдЗрдореЗрдЬ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ, рдЙрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
OpenCV рдореЗрдВ рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк adaptiveThreshold рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
def binarize ( image) :
"""Binarizes the image using adaptive thresholding.
Args:
image: The input grayscale image.
Returns:
The binary image.
"""
thresh = cv2. adaptiveThreshold(
image, 255 , cv2. ADAPTIVE_THRESH_MEAN_C, cv2. THRESH_BINARY, 11 , 2
)
return thresh
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
5. рдЕрдиреНрдп рддрдХрдиреАрдХреЗрдВ
рдХрдИ рдЕрдиреНрдп рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрдХрдиреАрдХреЗрдВ рд╣реИрдВ, рдЬреИрд╕реЗ:
рдбрд╛рдЗрд▓реЗрд╢рди: рдЫреЛрдЯреЗ рдФрд░ рдкрддрд▓реЗ рдлрд╝реЙрдиреНрдЯ рдХреЛ рдореЛрдЯрд╛ рдмрдирд╛рдирд╛ рддрд╛рдХрд┐ рдкрд╣рдЪрд╛рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ
рдЗрд░реЛрд╢рди: рдореЛрдЯреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХреНрд╖реАрдг рдХрд░рдирд╛ рддрд╛рдХрд┐ рд╕рдЯреАрдХрддрд╛ рдмрдврд╝реЗред рдЕрдХреНрд╕рд░ рдореЛрдЯреЗ рдлрд╝реЙрдиреНрдЯ рд╡рд╛рд▓реЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрддред
Canny edge detection
рд╕реНрдХреНрдпреВ рдХрд░реЗрдХреНрд╢рди: рдЯреЗрдХреНрд╕реНрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЭреБрдХрд╛рд╡ (рд╕реНрдХреНрдпреВрдиреЗрд╕) рдХреЛ рдареАрдХ рдХрд░рдирд╛ред рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЖрдо
рдЖрдк рдЗрдореЗрдЬ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ Tesseract рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдЗрд╕ рдкреЗрдЬ рд╕реЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдкрдиреЗ OCR рдЬреИрд╕реА рдЧрддрд┐рд╢реАрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдХрджрдо рдЙрдард╛рдПред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕рд░рд▓ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдирд┐рдХрд╛рд▓рдирд╛ рдХрд╡рд░ рдХрд┐рдпрд╛, рдлрд┐рд░ рдЬрдЯрд┐рд▓ рдлрд╝реЙрд░реНрдореИрдЯрд┐рдВрдЧ рд╡рд╛рд▓реА рдЕрдзрд┐рдХ рдХрдард┐рди рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рдЧрдПред
рд╣рдордиреЗ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП PDF рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдВрдб-рдЯреВ-рдПрдВрдб рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рднреА рд╕реАрдЦрд╛ рдФрд░ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ PDF рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡ рдХрд░рдирд╛ рд╕реАрдЦрд╛ рддрд╛рдХрд┐ рд╡рд╣ рдЦреЛрдЬ рдпреЛрдЧреНрдп рдмрди рдЬрд╛рдПред рдЕрдВрдд рдореЗрдВ, Tesseract рдореЗрдВ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ OpenCV рдХреЗ рд╕рд╛рде рдЗрдореЗрдЬ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рдХреБрдЫ рд╕реБрдЭрд╛рд╡реЛрдВ рд╕реЗ рд▓реЗрдЦ рдХреЛ рд╕рдореЗрдЯрд╛ред
рдпрджрд┐ рдЖрдк рдЗрдореЗрдЬ-рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдБ рдХреБрдЫ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
Optical Character Recognition (OCR) рдХреНрдпреЛрдВ рд╕реАрдЦреЗрдВ?
рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рда рдирд┐рдХрд╛рд▓рдирд╛ рдмрд╣реБрдд рдердХрд╛рдК рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, OCR (Optical Character Recognition) рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдРрд╕реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдФрд░ рдЦреЛрдЬ рдпреЛрдЧреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЬрд┐рди рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ Tesseract OCR рдЗрдВрдЬрди рдФрд░ рдЙрд╕рдХреЗ Python API - PyTesseract рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ред рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ OCR рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВред
Python рдореЗрдВ рд╢реАрд░реНрд╖ рдУрдкрди-рд╕реЛрд░реНрд╕ OCR рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рдЪреВрдВрдХрд┐ OCR рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдирд┐рд░рдВрддрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХрдИ рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЙрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдЯреАрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реБрдИ рд╣реИрдВред
Tesseract
Tesseract OCR рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдСрдкреНрдЯрд┐рдХрд▓ рдХреИрд░реЗрдХреНрдЯрд░ рд░рд┐рдХреЙрдЧреНрдирд┐рд╢рди рдЗрдВрдЬрди рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдЕрдиреНрдп рдЯреВрд▓реНрд╕ рдХреА рддрд░рд╣, Tesseract рдЯреЗрдХреНрд╕реНрдЯ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЗрдХрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдлрд╛рдпрджреЗ
рдиреБрдХрд╕рд╛рди
Easy OCR
EasyOCR рдПрдХ Python рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдЖрд╕рд╛рди Optical Character Recognition (OCR) рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрдкрдиреА рдирд╛рдорд╛рдиреБрд╕рд╛рд░ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдлрд╛рдпрджреЗ
рдиреБрдХрд╕рд╛рди
Keras OCR
Keras-OCR, Keras (рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ) рдкрд░ рдЖрдзрд╛рд░рд┐рдд Python рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ OCR рдореЙрдбрд▓реНрд╕ рдФрд░ рдирдП OCR рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдб-рдЯреВ-рдПрдВрдб рдЯреНрд░реЗрдирд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдлрд╛рдпрджреЗ
рдиреБрдХрд╕рд╛рди
рдпрд╣рд╛рдБ рдЙрдирдХреЗ рдЕрдВрддрд░, рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдиреЗ рд╡рд╛рд▓реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:
рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо
рдлрд╛рдпрджрд╛
рдиреБрдХрд╕рд╛рди
Tesseract (pytesseract)
рдкрд░рд┐рдкрдХреНрд╡, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА, рд╡рд┐рд╕реНрддреГрдд рд╕рдорд░реНрдерди
рдзреАрдорд╛, рдЬрдЯрд┐рд▓ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдХрдо рд╕рдЯреАрдХрддрд╛
EasyOCR
рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд░рд▓, рдХрдИ рдореЙрдбрд▓
рдХрдо рд╕рдЯреАрдХрддрд╛, рд╕реАрдорд┐рдд рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди
Keras-OCR
рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛, рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрдмрд▓
GPU рдЖрд╡рд╢реНрдпрдХ, рд╕реАрдЦрдиреЗ рдХреА рдврд▓рд╛рди рдЕрдзрд┐рдХ
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо
PyTesseractрдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ, рдЬреЛ Tesseract рдХрд╛ Python API рд╣реИред рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдП, рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдБ, рдФрд░ рдПрдХ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдХреЗрд╕ рд╕реНрдЯрдбреА рдХреИрд╕реЗ рдХреА рдЬрд╛рдПредPyTesseract рдФрд░ OpenCV рдХреЗ рд╕рд╛рде OCR: рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди
PyTesseract рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Tesseract рдЗрдВрдЬрди рдХреЗ рдКрдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЕрд▓рдЧ CLI рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╣реИред pytesseract рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдпрд╣ рдЗрдВрдЬрди рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреАрдЪреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рджрд┐рдП рдЧрдП рд╣реИрдВред
Ubuntu рдпрд╛ WSL2 (рдореЗрд░рд╛ рдЪреБрдирд╛рд╡) рдХреЗ рд▓рд┐рдП:
Mac рдХреЗ рд▓рд┐рдП (Homebrew рдХреЗ рд╕рд╛рде):
Windows рдХреЗ рд▓рд┐рдП, рдЗрд╕ GitHub рдкреЗрдЬ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдирдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдмрдирд╛рдПрдБред рдореИрдВ Conda рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛:
рдлрд┐рд░, рдЖрдкрдХреЛ OCR рдХреЗ рд▓рд┐рдП
pytesseractрдФрд░ рдЗрдореЗрдЬ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдПopencvрдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:рдпрджрд┐ рдЖрдк рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ Jupyter рдореЗрдВ рдлреЙрд▓реЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрдиреНрд╣реАрдВ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдЙрд╕реА рдЯрд░реНрдорд┐рдирд▓ рд╕рддреНрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдБ рддрд╛рдХрд┐ рдЖрдкрдХрд╛ рдирдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдПрдХ рдХрд░реНрдиреЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рдП:
рдЕрдм, рд╣рдо рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмреЗрд╕рд┐рдХ рдЙрдкрдпреЛрдЧ
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдпрд╛рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдирд┐рдореНрди рдЫрд╡рд┐ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдкрдврд╝рдирд╛ рд╣реИ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрдореЗрдЬ рдкрд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ
cv2.imreadрдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрддреЗ рд╣реИрдВ:рдлрд┐рд░, рд▓реЛрдб рдХреА рдЧрдИ рдЗрдореЗрдЬ рдХреЛ
pytesseractрдХреЗimage_to_stringрдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рдХреЗ рдЯреЗрдХрзНрж╕реНрдЯ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:рдмрд┐рд▓реНрдХреБрд▓ рдЗрддрдирд╛ рд╣реА рдЖрд╕рд╛рди! рдЖрдЗрдП рдЬреЛ рд╣рдордиреЗ рдЕрднреА рдХрд┐рдпрд╛ рдЙрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓ рджреЗрдВ:
рдЖрдЗрдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЕрдзрд┐рдХ рдХрдард┐рди рдЫрд╡рд┐ рдкрд░ рдХрд░реЗрдВ:
рдпрд╣ рдЫрд╡рд┐ рдЕрдзрд┐рдХ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рд╣реИред
рд╣рдорд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред рдЗрд╕рдиреЗ рдПрдХ рдбреЙрдЯ рдФрд░ тАЬ>тАЭ рдЪрд┐рд╣реНрди рдореЗрдВ рднреНрд░рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред
рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛
OCR рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░рд┐рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛ рд╣реИред рдпрд╣ рдХреНрд░рд┐рдпрд╛ PyTesseract рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд▓реЛрдб рдХреА рдЧрдИ рдЗрдореЗрдЬ рдХреЛ
image_to_dataрдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:Output.DICTрднрд╛рдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрдореЗрдЬ рд╡рд┐рд╡рд░рдг рдПрдХ рдбрд┐рдХреНрд╢рдирд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯреЗред рдЖрдЗрдП рдЕрдВрджрд░ рдЭрд╛рдБрдХрддреЗ рд╣реИрдВ:рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рдЗрдореЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд-рд╕реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдкрд╣рд▓реЗ,
confрдФрд░textрдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рджреЛрдиреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ 11 рд╣реИ:рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐
pytesseractрдиреЗ 11 рдмреЙрдХреНрд╕ рдмрдирд╛рдПредconfрдХрд╛ рдЕрд░реНрде confidence рд╣реИред рдпрджрд┐ рдпрд╣ -1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдмреЙрдХреНрд╕ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢рдмреНрджреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЪрд╛рд░
widthрдФрд░heightрдорд╛рдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ рд╡реЗ рдмрд╛рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдбрд╝реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмреЙрдХреНрд╕ рдкреВрд░реЗ рдордзреНрдп рдЯреЗрдХреНрд╕реНрдЯ, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдФрд░ рдлрд┐рд░ рдкреВрд░реА рдЗрдореЗрдЬ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВредрд╕рд╛рде рд╣реА:
leftрдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЗ рдКрдкрд░реА-рдмрд╛рдПрдБ рдХреЛрдиреЗ рд╕реЗ рдЗрдореЗрдЬ рдХреА рдмрд╛рдПрдБ рд╕реАрдорд╛ рддрдХ рдХреА рджреВрд░реА рд╣реИредtopрдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЗ рдКрдкрд░реА-рдмрд╛рдПрдБ рдХреЛрдиреЗ рд╕реЗ рдЗрдореЗрдЬ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рддрдХ рдХреА рджреВрд░реА рд╣реИредwidthрдФрд░heightрдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдБрдЪрд╛рдИ рд╣реИрдВредрдЗрди рдЬрд╛рдирдХрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдЗрдП OpenCV рдореЗрдВ рдЗрдореЗрдЬ рдкрд░ рдмреЙрдХреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ, рд╣рдо рдлрд┐рд░ рд╕реЗ рдбреЗрдЯрд╛ рдФрд░ рдЙрд╕рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:
рдлрд┐рд░, рд╣рдо рдорд┐рд▓реЗ рдмреЙрдХреНрд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реВрдк рдмрдирд╛рддреЗ рд╣реИрдВ:
рд▓реВрдк рдХреЗ рдЕрдВрджрд░, рд╣рдо рдПрдХ рд╢рд░реНрдд рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ
conf-1 рд╣реЛрдиреЗ рдкрд░ рд╡рд░реНрддрдорд╛рди рдЗрдЯрд░реЗрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИред рдмрдбрд╝реЗ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рд╣рдорд╛рд░реА рдЗрдореЗрдЬ рд╕рд╛рдлрд╝ рд░рд╣реЗрдЧреАредрдлрд┐рд░, рд╣рдо рд╡рд░реНрддрдорд╛рди рдмреЙрдХреНрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖рдХрд░ рдКрдкрд░реА-рдмрд╛рдПрдБ рдФрд░ рдирд┐рдЪрд▓реЗ-рджрд╛рдПрдБ рдХреЛрдиреЛрдВ рдХреЗ рд╕реНрдерд╛рди:
рдХреБрдЫ рдмреЙрдХреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ (рдЬреИрд╕реЗ рд░рдВрдЧ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдореЛрдЯрд╛рдИ) рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА
cv2.rectangleрдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдореВрд▓ рдЗрдореЗрдЬ рдХреЗ рдКрдкрд░ рдмреЙрдХреНрд╕ рдмрдирд╛ рджреЗрдЧрд╛ред рдЖрдЗрдП рдЗрдореЗрдЬ рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ:
рдкрд░рд┐рдгрд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ!
рдЕрдм, рдЖрдЗрдП рдЬреЛ рдХреБрдЫ рднреА рд╣рдордиреЗ рдХрд┐рдпрд╛ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
рдФрд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдордзреНрдпрдо-рдХрдард┐рди рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдХрд░реЗрдВ:
рдХрдард┐рди рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рднреА, рдкрд░рд┐рдгрд╛рдо рдмреЗрд╣рддрд░реАрди рд╣реИ!
рдХреЗрд╕ рд╕реНрдЯрдбреА: Python рдХреЗ рд╕рд╛рде PDF рдлрд╝рд╛рдЗрд▓ рдкрд░ OCR
рдЖрдЗрдП рдПрдХ рдирдореВрдирд╛ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП PDF рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХреЗрд╕ рд╕реНрдЯрдбреА рдХрд░реЗрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП PDF рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдпрд╣:
рдЖрдк PDF рдХреЛ рдореЗрд░реЗ GitHub рдХреЗ рдЗрд╕ рдкреЗрдЬ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛ рдЪрд░рдг
pdf2imageрд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Poppler рдирд╛рдордХ PDF рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ:Mac рдХреЗ рд▓рд┐рдП:
Linux рдФрд░ WSL2 рдХреЗ рд▓рд┐рдП:
Windows рдХреЗ рд▓рд┐рдП, рдЖрдк PDF2Image рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:
convert_from_pathрдлрд╝рдВрдХреНрд╢рди рджрд┐рдП рдЧрдП PDF рдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХрд┐рд╕реА PDF рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЛ рджреА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡ рдХрд░рддрд╛ рд╣реИ:рдЖрдЗрдП рдЗрд╕реЗ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдЪрд▓рд╛рдПрдБ:
рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ
PngImageFileрдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдЗрдПdocumentsрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:рдЗрдореЗрдЬ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдЖрдЗрдП рдЗрд╕реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдирд╛рдП рдЧрдП
image_to_textрдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕реМ рдЕрдХреНрд╖рд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ:рдпрджрд┐ рд╣рдо рдЯреЗрдХреНрд╕реНрдЯ рдХреА рддреБрд▓рдирд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрд░реЗрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИтАКтАФтАКрдлреЙрд░реНрдореИрдЯрд┐рдВрдЧ рдФрд░ рд╕реНрдкреЗрд╕рд┐рдВрдЧ рдмрдиреА рд╣реБрдИ рд╣реИ, рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдЯреАрдХ рд╣реИред рддреЛ, рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХреИрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ?
рджрд░рдЕрд╕рд▓, рдирд┐рдХрд╛рд▓реЗ рдЧрдП PDF рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдлрд╝реЙрд░реНрдореЗрдЯ рдПрдХ рдФрд░ PDF рдлрд╝рд╛рдЗрд▓ рд╣реА рд╣реИ! PyTesseract рдореЗрдВ
image_to_pdf_or_hocrрдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рд╡рд╛рд▓реА рдЗрдореЗрдЬ рдХреЛ рдПрдХ рдХрдЪреНрдЪреА, рдЯреЗрдХреНрд╕реНрдЯ-рдЦреЛрдЬрдпреЛрдЧреНрдп PDF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдЕрдкрдиреА рд╕реНрдХреИрди рдХреА рдЧрдИ рдЗрдореЗрдЬ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:рдФрд░
searchable_pdfрдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╣рд╛рдИрд▓рд╛рдЗрдЯ рдФрд░ рдХреЙрдкреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рд╕рд╛рде рд╣реА, рдореВрд▓ PDF рдХреЗ рд╕рднреА рддрддреНрд╡ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВред
OpenCV рдореЗрдВ OCR рдХреЗ рд▓рд┐рдП рдЗрдореЗрдЬ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрдХрдиреАрдХреЗрдВ
OCR рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рддрд░рд╣ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рднреА рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдЖрдЬ рдХрд╡рд░ рдХреА рдЧрдИ рддрдХрдиреАрдХреЗрдВ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рди рднреА рдХрд░реЗрдВред рдореИрдВ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЗрдореЗрдЬ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдФрд░ Tesseract рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБ рддрд╛рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдорд┐рд▓ рд╕рдХреЗрдВред
OCR рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдЗрдореЗрдЬ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╣реИред рдареАрдХ рд╕реЗ рд╕реНрдХреИрди рдХреА рдЧрдИ, рдкреВрд░реА рддрд░рд╣ рд╕реАрдзреА рдФрд░ рдЙрдЪреНрдЪ-рдХреЙрдиреНрдЯреНрд░рд╛рд╕реНрдЯ (рдХрд╛рд▓рд╛-рд╕рдлреЗрдж) рдЫрд╡рд┐рдпрд╛рдБ рдХрд┐рд╕реА рднреА OCR рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдк рдЯреЗрдХреНрд╕реНрдЯ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рднреА рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреА рдЫрд╡рд┐рдпрд╛рдБ Tesseract рдХреЗ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдорд╛рдирдХреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреАрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЖрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреБрдЫ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
1. рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рд░реВрдкрд╛рдВрддрд░рдг
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░рдВрдЧреАрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЗрд╕рд╕реЗ рд░рдВрдЧ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рдЪрд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВред OpenCV рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
2. рд╢реЛрд░ рдореЗрдВ рдХрдореА
рд╕рднреА рдЫрд╡рд┐рдпрд╛рдБ, рдЦрд╛рд╕рдХрд░ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рдПрдХрджрдо рд╕рд╛рдлрд╝ рдФрд░ рд╕рдорд╛рди рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддреАрдВред рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдБ рдкреБрд░рд╛рдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдБ рдкреГрд╖реНрда рдЙрдореНрд░ рдХреЗ рдХрд╛рд░рдг рдЦрд╝рд░рд╛рдм рд╣реЛ рдЧрдП рд╣реЛрдВред рдпрд╣ рд░рд╣рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рдорд┐рд╕рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯреЗрд╢рди рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП median blur рдЬреИрд╕реЗ рдбрд┐рдиреЙрдЗрдЬрд╝рд┐рдВрдЧ рдлрд╝рд┐рд▓реНрдЯрд░реНрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВред OpenCV рдореЗрдВ, рдЖрдк
medianBlurрдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:3. рд╢рд╛рд░реНрдкрдирд┐рдВрдЧ
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрдореЗрдЬ рдХреЛ рд╢рд╛рд░реНрдк рдХрд░рдирд╛ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЙрднрд╛рд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреИрд░реЗрдХреНрдЯрд░ рд░рд┐рдХреЙрдЧреНрдирд┐рд╢рди рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдзреБрдВрдзрд▓реА рдпрд╛ рдХрдо-рд░реЗрдЬрд╝реЛрд▓реНрдпреВрд╢рди рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред OpenCV рдореЗрдВ Laplacian рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╢рд╛рд░реНрдкрдирд┐рдВрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
4. рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди
рдХреБрдЫ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди (рдЗрдореЗрдЬ рдХреЛ рдХрд╛рд▓рд╛-рд╕рдлреЗрдж рдореЗрдВ рдмрджрд▓рдирд╛) рд▓рд╛рднрдХрд╛рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧреНрд░рднреВрдорд┐ (рдЯреЗрдХреНрд╕реНрдЯ) рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдмреАрдЪ рдЗрд╖реНрдЯрддрдо рдкреГрдердХреНрдХрд░рдг рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрд╢рд╣реЛрд▓реНрдбрд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдпрд╣рд╛рдБ рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реНрдб рдЗрдореЗрдЬ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ, рдЙрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
OpenCV рдореЗрдВ рдмрд╛рдЗрдирд░рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
adaptiveThresholdрдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:5. рдЕрдиреНрдп рддрдХрдиреАрдХреЗрдВ
рдХрдИ рдЕрдиреНрдп рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрдХрдиреАрдХреЗрдВ рд╣реИрдВ, рдЬреИрд╕реЗ:
рдЖрдк рдЗрдореЗрдЬ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ Tesseract рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдЗрд╕ рдкреЗрдЬ рд╕реЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдкрдиреЗ OCR рдЬреИрд╕реА рдЧрддрд┐рд╢реАрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдХрджрдо рдЙрдард╛рдПред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕рд░рд▓ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдирд┐рдХрд╛рд▓рдирд╛ рдХрд╡рд░ рдХрд┐рдпрд╛, рдлрд┐рд░ рдЬрдЯрд┐рд▓ рдлрд╝реЙрд░реНрдореИрдЯрд┐рдВрдЧ рд╡рд╛рд▓реА рдЕрдзрд┐рдХ рдХрдард┐рди рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рдЧрдПред
рд╣рдордиреЗ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП PDF рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдВрдб-рдЯреВ-рдПрдВрдб рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рднреА рд╕реАрдЦрд╛ рдФрд░ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ PDF рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡ рдХрд░рдирд╛ рд╕реАрдЦрд╛ рддрд╛рдХрд┐ рд╡рд╣ рдЦреЛрдЬ рдпреЛрдЧреНрдп рдмрди рдЬрд╛рдПред рдЕрдВрдд рдореЗрдВ, Tesseract рдореЗрдВ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ OpenCV рдХреЗ рд╕рд╛рде рдЗрдореЗрдЬ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рдХреБрдЫ рд╕реБрдЭрд╛рд╡реЛрдВ рд╕реЗ рд▓реЗрдЦ рдХреЛ рд╕рдореЗрдЯрд╛ред
рдпрджрд┐ рдЖрдк рдЗрдореЗрдЬ-рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдБ рдХреБрдЫ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: