Страница 1 из 1

Парсинг картинки (изображения) в текст

Добавлено: 10 сен 2024, 14:31
ya
Парсинг картинки (изображения) в текст

Установить необходимые библиотеки

Код: Выделить всё

sudo apt-get update
sudo apt-get install tesseract-ocr libtesseract-dev libleptonica-dev tesseract-ocr-rus libopencv-imgcodecs4.5 libtesseract4

Код: Выделить всё

sudo apt-get install libopencv-dev
img-to-text.cpp

Код: Выделить всё

#include <iostream>
#include <opencv2/opencv.hpp>
#include <tesseract/baseapi.h>
//#include <tesseract/tesseract.h>

int main(int argc, char** argv) 
{
    
        if (argc != 2) {
        std::cerr << "Usage: " << argv[0] << " <pdf-file>" << std::endl;
        return 1;
    }
    std::string pdf_file = argv[1];
    
    // Загружаем изображение
    cv::Mat image = cv::imread(pdf_file); // замените "image.png" на ваш файл
    if (image.empty()) {
        std::cerr << "Ошибка: Не удалось загрузить изображение!" << std::endl;
        return 1;
    }

    // Создаем экземпляр Tesseract
    tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();
    if (ocr->Init(NULL, "rus")) { // "eng" для английского языка
        std::cerr << "Ошибка: не удалось инициализировать Tesseract!" << std::endl;
        return 1;
    }

    // Указываем изображение для распознавания
    ocr->SetImage(image.data, image.cols, image.rows, 3, image.step[0]);

    // Выполняем распознавание текста
    char* outText = ocr->GetUTF8Text();
    // Вывод распознанного текста на консоль
    std::cout << std::endl<< outText << std::endl;

    // Освобождаем память
    delete[] outText;
    ocr->End();

    return 0;
}
Компиляция

Код: Выделить всё

#!/bin/bash

g++ -std=c++11 img-to-text.cpp -o img-to-text `pkg-config --cflags --libs opencv4` `pkg-config --cflags --libs tesseract`
Выполение

Код: Выделить всё

/bin/bash  img-to-text файл_картинки.jpg