/apa-formatter

Proof-of-concept APA format validator analyzing Word documents for compliance with APA guidelines, including margin sizes, header formatting, line spacing, and font styles.

Primary LanguagePython

Автоматизований Вебсервіс для Форматування Статей за Стилем APA

Цей proof-of-concept проєкт розроблений для створення вебсервісу, який автоматично перевіряє та надає рекомендації щодо виправлення форматування наукових статей за стандартами APA для журналу Journal of Applied Psychology (JAP). Метою є зниження кількості помилок форматування та економія часу користувачів.

Основні Компоненти Системи

  1. Завантаження документів:

    • Користувачі завантажують свої статті у форматі .docx, які система автоматично приймає через ендпоінт /validate.
    • Перевіряється правильність формату файлу; якщо це не .docx, видається повідомлення про помилку.
      В майбутньому можна додати перевірку розміру файла.
  2. Перевірка базового форматування:

    • Кожен Analyzer відповідає за перевірку певних вимог APA: форматування тексту, відступи, хедери тощо.
    • Кожне відхилення від стандартів APA, наприклад неправильний розмір шрифту чи відсутність хедеру, додається до списку зауважень (FormatIssue), які система надалі показує користувачу як пропозиції до виправлення.
  3. Аналіз компонентів документу:

    • Концепція подальшого розвитку передбачає розширення на додаткові компоненти, такі як KeywordsAnalyzer, TitlePageAnalyzer, AbstractAnalyzer тощо, щоб охопити всі вимоги до форматування згідно з APA.
    • Наразі ці класи існують як пусті заглушки з документацією, що описує майбутню функціональність.
  4. Експорт виправленого документа:

    • Після затвердження користувачем вибраних виправлень система згенерує фінальну версію документа з урахуванням вимог APA.
    • APACompositeAnalyzer проаналізує документ і надасть зауваження. Враховуючи зауваження і їх тип, система форматування виправить зауваження відповідно до правил APA.
    • Враховуючи proof-of-concept, ця частина реалізації не включена до проєкту.

Архітектура проекта

Проект організований за принципом Композитор, де основний клас CompositeAnalyzer приймає набір аналізаторів і викликає їх для перевірки документа. Це дозволяє додавати нові аналізатори чи видаляти наявні без змін у головному класі.

Модель Issue:

  • Клас FormatIssue використовується для представлення помилок форматування, знайдених аналізаторами. Включає позицію помилки, тип, поточне значення та рекомендоване виправлення.

Виклики та Рішення

Виклик 1: Визначення цитувань

  • Рішення: Використання регулярних виразів (regex) для пошуку цитувань у форматі (Автор, Рік). Це дозволить знаходити цитати навіть у випадках, коли форматування було порушене.

Виклик 2: Форматування заголовків

  • Рішення: Перевірка вирівнювання заголовків та шрифтів за допомогою python-docx з можливістю внесення пропозицій до виправлення.

Тестування

На поточному етапі для тестування proof-of-concept є /mock/validate ендпоінт. Цей ендпоінт створює документ з порушенням правил APA і аналізує його відповідно до загальних правил форматування.

Бібліотеки та інструменти

  • python-docx: для обробки файлів .docx (аналіз і внесення змін).
  • FastAPI: для створення REST API для завантаження документів.
  • pyapa: для базового форматування згідно з правилами APA (опціонально, не використовується)

Установка та Запуск

  1. Клонуйте репозиторій:

    git clone <URL>
    cd <project_folder>
  2. Створіть віртуальне оточення та встановіть залежності:

    python -m venv venv && source venv/bin/activate
    pip install -r requirements.txt
  3. Запустіть додаток:

    python -m app.main

Swagger: http://127.0.0.1:8000/api/docs