Skip to content

9kin/exam-reader

Repository files navigation

exam-reader

image

image

image

image

Documentation


Exam-reader – программа для извлечения и обработки данных из файлов, формирования разных отчётов и анализа данных.

Файлы протоколов проверки результатов ЕГЭ/ОГЭ/ВПР с расширением pdf представляют собой сводную таблицу по образовательной организации.

Проблема

Протоколы результатов ЕГЭ/ОГЭ/ВПР приходят ежегодно в больших объёмах.

Школа должна предоставлять Министерству образования различную статистику:

  • в целом по школе,
  • по параллелям,
  • по классам,
  • по учащимся,
  • по учителям,
  • по предметам и т.п.

Это трудозатратно, так как это требует много сил и времени, потому что делается вручную.

Пример: картинка, полученая с помощью ghostscript

Пример: картинка, полученая с помощью ghostscript

Принцип работы

image

Зависимости (библиотеки).

Task (job)

job - задачи, которые хранятся в бд, и worker выполняет эти задачи.

Поочередно добавляя только минимальное количество задач, которые он cможет решить, чтобы не терять задачи при выключении.

Структура job в бд:

  • id
  • path (CharField)
  • status (SmallIntegerField)
    • 0 - не выполнилась
    • 1 - выполняется
    • 2 - закончила выполнение

Cli

python3 -m exam_reader [OPTIONS] COMMAND [ARGS]...

Добавление файлов в очередь (db).

python3 -m exam_reader add files/ege2016.pdf files/ege2016.pdf

Запуск воркера.

  • -c, --count [int] количество процессов в воркере (default 3)
  • -d, --debug показывает строку состояния (без -f, --files), иначе показывает обычные сообщения о задачах (dafult false)
  • -f, --files [int] добавляет в очередь тестовые фалы количеством, которое вы указали. (запускается для тестов производительности, незавершённые задачи ставит в очередь снова (1) строчка)

Запуск воркера с добавлением файлов.

Для примера надо открыть два терминала (1 - для запуска воркера, 2 - добавления задачь).

TODO !! condition (sigkill) gif как в dramatiq

python3 -m exam_reader worker -c 2 -d -f 2

Запуск теста производительности:

python3 -m exam_reader worker -c 2 -d -f 2

image

⚙️ Installation

Если есть ошибка Failed building wheel for PyMuPDF попробуйте обновить pip.

pip3 install --upgrade pip

Процесс разработки

  • Добавлена обработка pdf файлов с помощью multiprocessing JoinableQueue camelot и PyMupdf.
  • 05.11.20 Добавлен воркер (db) и основная документация к нему, также некоторые примеры)