--- title: "πŸ”€ РаспознаваниС тСкста Π½Π° Python | easyocr" date: 2022-10-09T04:37:00+03:00 draft: false tags: [python, tutorial, ocr] --- ## Зависимости [easyocr](https://github.com/JaidedAI/EasyOCR) β€” Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для распознания тСкста с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 80 языков ΠΈ всСх популярных ΠΏΠΈΡΡŒΠΌΠ΅Π½Π½ΠΎΡΡ‚Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Ρƒ, китайский, арабский, Π΄Π΅Π²Π°Π½Π°Π³Π°Ρ€ΠΈ, ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ ΠΈ Ρ‚.Π΄. [pyscreeze](https://github.com/asweigart/pyscreeze)\* β€” это простой кроссплатформСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для создания ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² экрана. \* Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. ```sh pip install easyocr pip install PyScreeze ``` ## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π° ```python import pyscreeze # ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ всСго экрана im = pyscreeze.screenshot("./file.png") # ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ области экрана im = pyscreeze.screenshot( "./region.jpg", region=( 100, # x ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ края 100, # y ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ края 500, # ΡˆΠΈΡ€ΠΈΠ½Π° области Π·Π°Ρ…Π²Π°Ρ‚Π° 500, # высота области Π·Π°Ρ…Π²Π°Ρ‚Π° ), ) ``` ΠŸΡƒΡ‚Ρ‘ΠΌ манипуляций с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ области ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ области спидомСтра ΠΈΠ· ΠΈΠ³Ρ€Ρ‹ [FUEL](https://steamcommunity.com/app/12800). Π‘ этим Ρ„Π°ΠΉΠ»ΠΎΠΌ я Π±ΡƒΠ΄Ρƒ дальшС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ![](/content/images/2022/fuel_speedo.jpg) ## РаспознаниС тСкста Для распознания тСкста Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒΡΡ Reader ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `readtext`. ```python import easyocr reader = easyocr.Reader(["en"], verbose=False) result = reader.readtext("./img.jpg") print(result) ``` `Reader` [ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚](https://github.com/JaidedAI/EasyOCR/blob/29e39cbe7122ccccbc0620a3b55228c024806cda/easyocr/easyocr.py#L31) `lang_list`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΈΠ· сСбя список с языками Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ **ISO 639**. `verbose=False` я установил, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΠΈΠΆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΅Π½ΠΈΠ΅: ```text CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU. ``` ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку. Π― Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΈΠ²Ρ‘Π» Π΅Ρ‘ ΠΊ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ. ```python [ ([[40, 0], [148, 0], [148, 72], [40, 72]], '84', 0.9997769398378397), ([[138, 44], [216, 44], [216, 76], [138, 76]], 'km]h', 0.9896810054779053), ([[34, 82], [192, 82], [192, 114], [34, 114]], '000030633', 0.9984012808546263) ] ``` Π—Π΄Π΅ΡΡŒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ `easyocr` Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Ρ‚ массив, с трСмя ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΏΠΎΡ…ΠΎΠΆ Π½Π° массив ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈΠ»ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° распознана строка. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ собствСнно сама распознанная строка. Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ распознания Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0–1 Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ. ΠŸΡ€ΠΈΡΠ²Π°Π΅Π²Π°Π΅ΠΌ значСния распознанного тСкста ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ```python speed = result[0][1] traveled = result[2][1][0:8] print("{1} km : {0} km/h".format(speed, traveled)) ```