Перед запуском проекта убедитесь, что на вашем компьютере установлены следующие инструменты:
- Node.js (версия >= 18.x.x)
- npm (версия >= 8.x.x)
- Склонируйте репозиторий проекта или загрузите исходный код.
- Перейдите в корневую директорию проекта:
cd <ваша_директория_проекта>
- Установите все необходимые зависимости с помощью команды:
npm install
Для разработки можно использовать ts-node
для непосредственного выполнения TypeScript файлов.
-
Запустите сервер:
npm start
Это выполнит команду:
ts-node ./src/index.ts
Сервер будет запущен на порту 3000 или другом, указанном в переменной окружения
APP_PORT
. -
Откройте браузер и перейдите по адресу:
http://localhost:3000
API документация доступна через Swagger UI:
-
Откройте браузер и перейдите по адресу:
http://localhost:3000/documentation
Это отобразит интерфейс Swagger для тестирования API.
APP_PORT
: Порт, на котором будет запущен сервер (по умолчанию: 3000).
src/
│
├── index.ts # Главный файл, точка входа в приложение
├── ocr.ts # Функции для OCR обработки
├── pdfUtils.ts # Функции для работы с PDF
├── worker.ts # Воркер для параллельной обработки страниц
├── types.ts # Определение типов
└── tessdata/ # Папка с данными для Tesseract.js
- Запуск проекта:
Запускает проект с использованием
npm start
ts-node
.
Этот маршрут позволяет загрузить PDF и получить распознанный текст с каждой страницы.
Параметры запроса (query params):
startPage
(необязательный): номер первой страницы для парсинга (по умолчанию: 1).endPage
(необязательный): номер последней страницы для парсинга.limit
(необязательный): количество параллельных задач для обработки (по умолчанию: 10).
Тело запроса:
- Файл в формате
application/pdf
.
Пример запроса:
curl -X POST "http://localhost:3000/parse-pdf" \
-H "Content-Type: application/pdf" \
--data-binary "@your-pdf-file.pdf"
Ответ:
- Успешный ответ содержит распознанный текст с каждой страницы PDF и статус обработки.
{
"results": [
{
"page": 1,
"ocrResult": "Текст со страницы 1"
},
{
"page": 2,
"ocrResult": "Текст со страницы 2"
}
],
"processedPages": 2
}
Если возникает ошибка, сервер вернет код состояния 500 и сообщение об ошибке:
{
"error": "Error processing PDF",
"details": "Описание ошибки"
}