MedSaver — це програма для конвертації медичних звітів та інших табульованих даних з формату PDF до зручного для обробки формату CSV.
Люди, які слідкують за своїм здоров'ям і регулярно здають аналізи в медичних лабораторіях, зустрічаються з незручністю при відстеженні своїх показників на великому проміжку часу. Це спричинено тим, що аналізи повертаються у вигляді PDF файлів. Хоч розширення PDF дає змогу переглядати їх на будь-якому пристрої, але унеможливлює легко копіювати таблиці для подальшого розгляду в інших програмах.
MedSaver розв'язує цю проблему, допомагаючи конвертувати дані з багатьох однотипних PDF файлів в зручніші для використання CSV файли. Після обробки програмою дані можна легко групувати та аналізувати в будь-яких інших програмах.
Основна задача — створити програму для системи Windows, яка конвертує дані з PDF документів у CSV файли, дозволяючи користувачам:
- Отримувати запити від користувача на конвертацію даних
- Знаходити та виокремлювати потрібні дані із файлів
- Зберігати результати у зручному для подальшого використання форматі
- GUI режим — інтерактивна робота з шаблонами та попередній перегляд
- CLI режим — пакетна обробка кількох PDF файлів одночасно
- Система шаблонів — збереження налаштувань для подальшого використання
- Гнучке виділення области — точна вибір області з таблицею в документі
- Навігація по сторінках — перевірка налаштувань на різних сторінках документа
Програма генерує CSV файли з двома стовпчиками:
- Перший стовпчик — Показник (назва аналізу)
- Другий стовпчик — Результат аналізу (значення)
Запустіть програму подвійним натисканням на PDFTestInForm3.exe
-
Завантаження файлу
- Введіть адресу файлу в поле "Test File address" або
- Натисніть кнопку "Search for file" для пошуку через файловий провідник
-
Налаштування шаблону
- Виберіть існуючий шаблон або створіть новий через ComboBox
- Назва шаблону — "New Template" для створення нового
-
Вибір області таблиці
- Клікніть та перетягніть лівою кнопкою миші на зображенні PDF, щоб виділити область з табличними даними
- Виділена область повинна містити лише "Показники" та "Результати"
-
Перевірка налаштувань
- Використовуйте кнопки "Prev page" та "Next page" для перевірки налаштувань на всіх сторінках
-
Іменування шаблону (опціонально)
- Змініть ім'я шаблону в полі "Name of template" для зручності
-
Конвертація
- Натисніть кнопку "Convert to CSV"
- Файл буде збережений поряд з вихідним PDF файлом
При закритті програми всі шаблони автоматично зберігаються в файл templates.json
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
Точка входу програми. Містить логіку для роботи в двох режимах:
- Без параметрів — запуск GUI
- З параметрами — запуск CLI
Використані функції Windows API:
AllocConsole()— створення консоліAttachConsole()— підключення до консолі батьківського процесуFreeConsole()— закриття консолі
Головне вікно GUI застосунку. Відповідає за:
- Відображення PDF сторінок
- Навігацію по сторінках
- Виділення області таблиці
- Управління шаблонами
- Запуск конвертації
Основні методи:
ImPdfUpdate()— оновлення переглядачаRenderPdfPageToBitmap()— рендеринг сторінки в растрову графікуConvertBitmapToBitmapImage()— конвертація для WPF- Обробники миші для виділення площі
Управління шаблонами областей таблиць:
Клас Templates:
- Зберігання списку шаблонів
- Завантаження/збереження з JSON
- Пошук шаблонів за назвою
Клас Template:
- Параметри області:
Left,Right,Top,Bottom(в відсотках від розміру сторінки) - Метод
MarginInActualSize()для масштабування відступів
Основна логіка конвертації:
- Читання PDF за допомогою PdfPig
- Екстракція таблиць
- Запис в CSV з двома стовпчиками
- Обробка форматування даних через регулярні вирази
| Пакет | Версія | Призначення |
|---|---|---|
| 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 (з усіма залежностями)
- Завантажте папку з вже скомпільованою програмою
- Запустіть
PDFTestInForm3.exe
Вимоги:
- Visual Studio 2022 або новіше
- .NET 8.0 SDK
Кроки:
# Клонування репозиторію
git clone https://github.com/Chardje/PDFTableToCSV.git
cd PDFTableToCSV
# Відновлення залежностей
dotnet restore
# Компіляція
dotnet build
# Запуск
dotnet runPDFTableToCSV/
├── 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 # Збережені шаблони (генерується при запуску)
Зберігає налаштовані шаблони в наступному форматі:
[
{
"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
}
]Показник,Результат
Гемоглобін,145
Еритроцити,4.8
- Підтримується лише Windows
- Найкращі результати з регулярно структурованими таблицями
- Потребує попередньої налаштування шаблонів
- Не автоматично розпізнає різні формати PDF
- Підтримка Linux та macOS
- Автоматичне розпізнавання таблиць
- Веб-інтерфейс
- Експорт до інших форматів (Excel, JSON)
- Розпізнавання тексту (OCR)
Проект розроблений як приватна утиліта. Детальна інформація про ліцензію знаходиться в репозиторії.
- GitHub: Chardje/PDFTableToCSV
- Розробник: Vladyslav Chardje
Версія документації: 1.0
Дата оновлення: 2026
Статус: Активно розвивається