πŸ”Ž Как Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ тСкст с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Python: пошаговоС руководство

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ тСкст с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ pytesseract.

import pytesseract
from PIL import Image

# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
image = Image.open('image.jpg')

# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π² тСкст
text = pytesseract.image_to_string(image, lang='rus')

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ распознанный тСкст
print(text)

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pytesseract ΠΈ Π΅Π΅ зависимости, Π° Ρ‚Π°ΠΊΠΆΠ΅ языковой ΠΏΠ°ΠΊΠ΅Ρ‚ для русского языка.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ тСкст с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Python?

РаспознаваниС тСкста с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π² области ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния. Π’ Python ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΡ‰Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² машинного обучСния. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько популярных способов распознавания тСкста с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Python.

1. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pytesseract

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΈ простых Π² использовании инструмСнтов для распознавания тСкста с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Python являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pytesseract. Для Π΅Π΅ установки Π²Π°ΠΌ потрСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:


pip install pytesseract
    

ПослС установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для чтСния тСкста с изобраТСния. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ это:


import pytesseract
from PIL import Image

# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
image = Image.open('image.png')

# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² тСкст
text = pytesseract.image_to_string(image, lang='rus')

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ распознанный тСкст
print(text)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ "image.png" с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Pillow ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ image_to_string ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pytesseract, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² тСкст. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ язык тСкста, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ - 'rus' для русского языка.

2. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenCV

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ популярным инструмСнтом для распознавания тСкста Π½Π° изобраТСниях являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OpenCV. Она прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с изобраТСниями, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ распознаваниС тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° OCR (оптичСского распознавания символов). Для использования OpenCV Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:


pip install opencv-python
    

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСмонстрируСт использованиС OpenCV для распознавания тСкста с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ:


import cv2
import pytesseract

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV
image = cv2.imread('image.png')

# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ изобраТСния Π² ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ сСрого
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ значСния ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ
threshold = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]

# УмСньшСниС ΡˆΡƒΠΌΠ° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ
blur = cv2.medianBlur(threshold, 3)

# РаспознаваниС тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pytesseract
text = pytesseract.image_to_string(blur, lang='rus')

# Π’Ρ‹Π²ΠΎΠ΄ распознанного тСкста
print(text)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ OpenCV для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния, прСобразования Π΅Π³ΠΎ Π² ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ сСрого ΠΈ примСнСния ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ значСния для получСния Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ изобраТСния. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ ΡˆΡƒΠΌ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ размытия ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ pytesseract для распознавания тСкста.

3. ИспользованиС API Google Cloud Vision

Если Π²Π°ΠΌ трСбуСтся Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для распознавания тСкста с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ API Google Cloud Vision. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этим API Π²Π°ΠΌ потрСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ использованиС API Google Cloud Vision Π² Python:


from google.cloud import vision

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
client = vision.ImageAnnotatorClient()

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния
with open('image.png', 'rb') as image_file:
    content = image_file.read()
    
image = vision.Image(content=content)

# РаспознаваниС тСкста Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ
response = client.text_detection(image=image)
texts = response.text_annotations

for text in texts:
    print(text.description)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ google-cloud-vision для создания ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ отправляСм запрос Π½Π° распознаваниС тСкста ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит распознанный тСкст ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ тСкстовых элСмСнтах Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли нСсколько способов распознавания тСкста с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящий для Π²Π°ΡˆΠΈΡ… потрСбностСй ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ своих Π·Π°Π΄Π°Ρ‡. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pytesseract, OpenCV ΠΈ API Google Cloud Vision ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠΎΡ‰Π½Ρ‹Π΅ инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с распознаваниСм тСкста, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… Π² соотвСтствии с вашими трСбованиями.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

РаспознаваниС тСкста с изобраТСния Π½Π° Python | EasyOCR vs Tesseract | ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅

Как Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ тСкст с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ / ΡƒΡ€ΠΎΠΊΠΈ Python

Π£Ρ‡ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ тСкст Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…, Π²ΠΈΠ΄Π΅ΠΎ, ΠΈΠ³Ρ€Π°Ρ… β–² Python + OpenCV + Tesseract

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Π² Python?

🐍 Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Π½Π° Linux? Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ практичСскиС Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ хитрости

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Python постоянно ΡΠ»ΡƒΡˆΠ°Π» 🎧

πŸ”Ž Как Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ тСкст с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Python: пошаговоС руководство

πŸ”§ Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Python: ΠΈΠΌΠΏΠΎΡ€Ρ‚ math

πŸ”§ Как Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ число Π² спискС ΠŸΠΈΡ‚ΠΎΠ½: простой Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

🐍 Python: ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Windows