Этот скрипт демонстрирует создание приложения на Python для распознавания текста на изображениях с использованием библиотек Tesseract OCR и OpenCV. Приложение позволяет извлекать текст из скриншотов, упрощая перенос кода.
Установка библиотек
Установите библиотеки Tesseract OCR и OpenCV. Установка Tesseract OCR зависит от операционной системы:
- macOS: brew install tesseract
- Linux: Используйте менеджер пакетов вашей системы (например, apt-get install tesseract-ocr для Debian/Ubuntu).
- Windows: Загрузите установщик с официального сайта и установите программу. Запомните путь к установленной директории (обычно C:Program FilesTesseract-OCR).
Затем установите Python-библиотеки:
- pip install pytesseract
- pip install opencv-python
Импорт библиотек и настройка пути
Создайте Python-проект и импортируйте необходимые библиотеки:
import cv2
import pytesseract
# Для Windows: укажите путь к tesseract.exe
pytesseract.pytesseract.tesseract_cmd = r'C:Program FilesTesseract-OCRtesseract.exe'
Замените путь к tesseract.exe на актуальный для вашей системы.
Обработка и распознавание
OpenCV используется для обработки изображения. cv2.imread() загружает изображение, cv2.cvtColor() преобразует его в оттенки серого (cv2.COLOR_BGR2GRAY). pytesseract.image_to_string() выполняет распознавание текста.
img = cv2.imread('image.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
text = pytesseract.image_to_string(gray, config='--oem 3 --psm 6')
print(text)
Для повышения точности используется конфигурация —oem 3 (движок LSTM) и —psm 6 (автоматическое определение блока текста).
Визуализация результатов
pytesseract.image_to_data() возвращает информацию о распознанных словах, включая координаты. Этот код обводит каждое слово прямоугольником и добавляет подпись:
data = pytesseract.image_to_data(gray)
for x in data.splitlines()[1:]: # Пропуск заголовка
y = x.split()
if len(y) == 12:
x, y, w, h = int(y[6]), int(y[7]), int(y[8]), int(y[9])
cv2.rectangle(img, (x,y), (x+w, y+h), (0, 0, 255), 2)
cv2.putText(img, y[11], (x,y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0,0,255), 2)
Tesseract OCR и OpenCV позволяют создавать эффективные приложения для распознавания текста на изображениях. Данный скрипт демонстрирует базовые возможности, которые можно расширить добавлением функционала.