Search
Write a publication
Pull to refresh

Comments 5

бесплатные конечные точки

какие интересные точки!

хабр уже не тот

И причем здесь TypeScript? Кликбейт одним словом...

Скрин с сайта
Скрин с сайта

распознаёт англоязычный текст на изображениях. Если отправить фотографию с русскоязычным текстом, то ответ всё равно будет на английском.

Если разработчики пытались спрятать возможность распознавания кириллицы (зачем?), то не очень удалось.

На Node.js можно легко сделать с использованием библиотеки "tesseract.js" для распознавания изображений в текст с сохранением в текстовый файл.

  • Создаём папку "TesseractOCR" и в ней четыре файла:

  • Первый файл "index.js" и сохраняем в нём:

const Tesseract = require('tesseract.js');
const fs = require('fs');
const path = require('path');

// Путь к папке с изображениями
const imagesDir = path.join(__dirname, 'img');
const outputDir = path.join(__dirname, 'output'); // Папка для сохранения текстов

// Создание папки с изображениями, если она не существует
if (!fs.existsSync(imagesDir)){
    fs.mkdirSync(imagesDir);
}

// Создание папки для сохранения текстов, если она не существует
if (!fs.existsSync(outputDir)){
    fs.mkdirSync(outputDir);
}

// Чтение всех файлов в папке
fs.readdir(imagesDir, async (err, files) => {
  if (err) {
    console.error('Ошибка при чтении папки:', err);
    return;
  }

  // Фильтрация только изображений (например, .png и .jpg)
  const imageFiles = files.filter(file => {
    return file.endsWith('.png') || file.endsWith('.jpg') || file.endsWith('.jpeg');
  });

  // Обработка каждого изображения
  const promises = imageFiles.map(file => {
    const filePath = path.join(imagesDir, file);
    console.log(`Обработка файла: ${filePath}`);

    return Tesseract.recognize(
      filePath,
      'rus+eng', // Указываем русский и английский языки
      {
        //logger: info => console.log(info) // Логирование прогресса
      }
    ).then(({ data: { text } }) => {
      console.log(`Распознанный текст из ${file}: \n\n`);
      console.log(text);

      // Сохранение распознанного текста в файл
      const outputFilePath = path.join(outputDir, `${path.parse(file).name}.txt`);
      fs.writeFileSync(outputFilePath, text);
      console.log(`Текст сохранен в ${outputFilePath}`);
    }).catch(err => {
      console.error(`Ошибка при обработке файла ${file}:`, err);
    });
  });

  // Ожидание завершения всех промисов
  try {
    await Promise.all(promises);
    console.log('Обработка всех изображений завершена.');
  } catch (error) {
    console.error('Ошибка при обработке изображений:', error);
  }
});
  • Второй файл "install.bat" и сохраняем в нём:

npm i
  • Третий файл "package.json" и сохраняем в нём:

{
  "name": "tesseractocr",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "tesseract.js": "^5.1.1"
  }
}
  • Четвёртый файл "start.bat" и сохраняем в нём:

node index.js

  1. Для установки зависимостей запускаем install.bat

  2. Запускаем start.bat (После первого запуска создаются папки: img и output)

  3. В папку "img" закидываем файлы для распознавания текста .png, .jpg или .jpeg.

  4. Запускаем start.bat

  5. В папке "output" будут созданы текстовые файлы.

Это просто обёртка API, а само размазывание где-то в облаке?

Sign up to leave a comment.

Other news