Распознавание текста с картинок: Python, Tesseract OCR, OpenCV

Этот скрипт демонстрирует создание приложения на 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 позволяют создавать эффективные приложения для распознавания текста на изображениях. Данный скрипт демонстрирует базовые возможности, которые можно расширить добавлением функционала.

Что будем искать? Например,программа