Skip to content

Repository files navigation

MedSaver - PDF Table to CSV Converter

Вступ

MedSaver — це програма для конвертації медичних звітів та інших табульованих даних з формату PDF до зручного для обробки формату CSV.

Люди, які слідкують за своїм здоров'ям і регулярно здають аналізи в медичних лабораторіях, зустрічаються з незручністю при відстеженні своїх показників на великому проміжку часу. Це спричинено тим, що аналізи повертаються у вигляді PDF файлів. Хоч розширення PDF дає змогу переглядати їх на будь-якому пристрої, але унеможливлює легко копіювати таблиці для подальшого розгляду в інших програмах.

MedSaver розв'язує цю проблему, допомагаючи конвертувати дані з багатьох однотипних PDF файлів в зручніші для використання CSV файли. Після обробки програмою дані можна легко групувати та аналізувати в будь-яких інших програмах.

Постановка задачі

Основна задача — створити програму для системи Windows, яка конвертує дані з PDF документів у CSV файли, дозволяючи користувачам:

  1. Отримувати запити від користувача на конвертацію даних
  2. Знаходити та виокремлювати потрібні дані із файлів
  3. Зберігати результати у зручному для подальшого використання форматі

Основні можливості

  • GUI режим — інтерактивна робота з шаблонами та попередній перегляд
  • CLI режим — пакетна обробка кількох PDF файлів одночасно
  • Система шаблонів — збереження налаштувань для подальшого використання
  • Гнучке виділення области — точна вибір області з таблицею в документі
  • Навігація по сторінках — перевірка налаштувань на різних сторінках документа

Формат вихідних даних

Програма генерує CSV файли з двома стовпчиками:

  • Перший стовпчик — Показник (назва аналізу)
  • Другий стовпчик — Результат аналізу (значення)

Як користуватися

Графічний режим

Запуск

Запустіть програму подвійним натисканням на PDFTestInForm3.exe

Основні кроки

  1. Завантаження файлу

    • Введіть адресу файлу в поле "Test File address" або
    • Натисніть кнопку "Search for file" для пошуку через файловий провідник
  2. Налаштування шаблону

    • Виберіть існуючий шаблон або створіть новий через ComboBox
    • Назва шаблону — "New Template" для створення нового
  3. Вибір області таблиці

    • Клікніть та перетягніть лівою кнопкою миші на зображенні PDF, щоб виділити область з табличними даними
    • Виділена область повинна містити лише "Показники" та "Результати"
  4. Перевірка налаштувань

    • Використовуйте кнопки "Prev page" та "Next page" для перевірки налаштувань на всіх сторінках
  5. Іменування шаблону (опціонально)

    • Змініть ім'я шаблону в полі "Name of template" для зручності
  6. Конвертація

    • Натисніть кнопку "Convert to CSV"
    • Файл буде збережений поряд з вихідним PDF файлом

Збереження

При закритті програми всі шаблони автоматично зберігаються в файл templates.json

Командний рядок (CLI режим)

CLI режим зручний для пакетної обробки багатьох файлів.

Синтаксис

PDFTestInForm3.exe -i <inputPath> -o <outputPath> -n <templateName> [-t <templatePath>]

Параметри

Параметр Обов'язковий Опис
-i, --inputPath Так Шлях до файлу або папки для обробки
-o, --outputPath Так Шлях до папки для збереження CSV файлів
-n, --nameOfTemplete Так Назва шаблону для обробки
-t, --templatePath Ні Шлях до файлу з шаблонами (за замовчуванням: templates.json)
--help Ні Показує допомогу
--version Ні Показує версію програми

Приклади

# Обробка одного файлу
PDFTestInForm3.exe -i "C:\analysis.pdf" -o "C:\output" -n "medical"

# Обробка папки з файлами
PDFTestInForm3.exe -i "C:\pdfs" -o "C:\csv_results" -n "hospital"

# Використання користувальницьких шаблонів
PDFTestInForm3.exe -i "C:\analysis.pdf" -o "C:\output" -n "custom" -t "C:\my_templates.json"

Технічна архітектура

Технологічний стек

  • Фреймворк: .NET 8.0 WPF Application
  • Мова: C#
  • ОС: Windows

Основні компоненти

App.xaml.cs

Точка входу програми. Містить логіку для роботи в двох режимах:

  • Без параметрів — запуск GUI
  • З параметрами — запуск CLI

Використані функції Windows API:

  • AllocConsole() — створення консолі
  • AttachConsole() — підключення до консолі батьківського процесу
  • FreeConsole() — закриття консолі

MainWindow.xaml.cs

Головне вікно GUI застосунку. Відповідає за:

  • Відображення PDF сторінок
  • Навігацію по сторінках
  • Виділення області таблиці
  • Управління шаблонами
  • Запуск конвертації

Основні методи:

  • ImPdfUpdate() — оновлення переглядача
  • RenderPdfPageToBitmap() — рендеринг сторінки в растрову графіку
  • ConvertBitmapToBitmapImage() — конвертація для WPF
  • Обробники миші для виділення площі

Templates.cs

Управління шаблонами областей таблиць:

Клас Templates:

  • Зберігання списку шаблонів
  • Завантаження/збереження з JSON
  • Пошук шаблонів за назвою

Клас Template:

  • Параметри області: Left, Right, Top, Bottom (в відсотках від розміру сторінки)
  • Метод MarginInActualSize() для масштабування відступів

SavePdfToCsv.cs

Основна логіка конвертації:

  • Читання PDF за допомогою PdfPig
  • Екстракція таблиць
  • Запис в CSV з двома стовпчиками
  • Обробка форматування даних через регулярні вирази

Залежності (NuGet пакети)

Пакет Версія Призначення
CommandLineParser 2.9.1 Парсинг аргументів командного рядка
CsvHelper 33.0.1 Запис CSV файлів
Newtonsoft.Json 13.0.3 Серіалізація/десеріалізація JSON
PdfiumViewer 2.13.0 Переглядання та рендеринг PDF
PdfiumViewer.Native.x86.v8-xfa 2018.4.8.256 Нативні бібліотеки для x86
PdfiumViewer.Native.x86_64.v8-xfa 2018.4.8.256 Нативні бібліотеки для x64
PdfPig 0.1.9-alpha-20240626-14e70 Екстракція таблиць з PDF
PDFsharp 6.1.0 Обробка PDF
System.Drawing.Common 9.0.0-preview.5.24306.5 Графічні операції
Tabula.Csv 0.1.3 Екстракція табульованих даних

Вимоги до системи

  • ОС: Windows 10 / 11
  • .NET Runtime: .NET 8.0 Windows Runtime
  • RAM: Мінімум 512 MB
  • Місце на диску: ~100 MB (з усіма залежностями)

Встановлення та запуск

Попередньо скомпільований варіант

  1. Завантажте папку з вже скомпільованою програмою
  2. Запустіть PDFTestInForm3.exe

Компіляція з вихідного коду

Вимоги:

  • Visual Studio 2022 або новіше
  • .NET 8.0 SDK

Кроки:

# Клонування репозиторію
git clone https://github.com/Chardje/PDFTableToCSV.git
cd PDFTableToCSV

# Відновлення залежностей
dotnet restore

# Компіляція
dotnet build

# Запуск
dotnet run

Структура проекту

PDFTableToCSV/
├── App.config              # Конфігурація застосунку
├── App.xaml                # XAML розмітка додатка
├── App.xaml.cs             # Логіка додатка (точка входу)
├── MainWindow.xaml         # XAML розмітка головного вікна
├── MainWindow.xaml.cs      # Логіка головного вікна
├── SavePdfToCsv.cs         # Логіка конвертації PDF→CSV
├── Templates.cs            # Управління шаблонами
├── AssemblyInfo.cs         # Інформація про збірку
├── PDFTestInForm3.csproj   # Файл проекту
└── templates.json          # Збережені шаблони (генерується при запуску)

Файлові формати

templates.json

Зберігає налаштовані шаблони в наступному форматі:

[
  {
    "Name": "medical",
    "Left": 0.05,
    "Right": 0.05,
    "Top": 0.1,
    "Bottom": 0.1
  },
  {
    "Name": "hospital",
    "Left": 0.0,
    "Right": 0.0,
    "Top": 0.15,
    "Bottom": 0.2
  }
]

CSV вихід

Показник,Результат
Гемоглобін,145
Еритроцити,4.8

Відомі обмеження

  • Підтримується лише Windows
  • Найкращі результати з регулярно структурованими таблицями
  • Потребує попередньої налаштування шаблонів
  • Не автоматично розпізнає різні формати PDF

Майбутні розширення

  • Підтримка Linux та macOS
  • Автоматичне розпізнавання таблиць
  • Веб-інтерфейс
  • Експорт до інших форматів (Excel, JSON)
  • Розпізнавання тексту (OCR)

Ліцензія

Проект розроблений як приватна утиліта. Детальна інформація про ліцензію знаходиться в репозиторії.

Контакти та підтримка

Джерела та посилання

Документація

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

Спільноти


Версія документації: 1.0
Дата оновлення: 2026
Статус: Активно розвивається

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages