У вас есть папки с PDF-отчётами, банковскими выписками или регуляторными отчётами, и табличные данные внутри них должны попасть в базу данных, электронную таблицу или аналитический конвейер. Копирование таблиц из PDF-просмотрщика в Excel разрушает структуру строк и столбцов уже на первых трёх страницах. Total PDF Converter X извлекает таблицы из PDF-файлов в CSV из командной строки, пакетно, без графического интерфейса. Установите его на сервер Windows, вызывайте из скрипта или через ActiveX, и он будет работать автоматически.
*.pdf), и конвертер обработает все подходящие файлы за один запуск-CSVDelimiter в соответствии с целевой системой-Encoding для чистой обработки нелатинских символов-CSVQuotation, чтобы защитить запятые внутри значений ячеек
(30 дней, без email)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
PDF — формат с фиксированной разметкой, предназначенный для визуального распространения и печати. Таблица внутри PDF не является структурированным объектом данных — это серия текстовых фрагментов, размещённых в определённых координатах x/y на странице. Просмотрщик отображает их так, что это выглядит как таблица, но в самом файле нет строк, столбцов или ячеек. Поэтому ручное копирование из PDF редко даёт чистый табличный вывод.
CSV — это текстовый формат данных с одной записью на строку и полями, разделёнными разделителем. Он напрямую импортируется в Excel, Google Sheets, базы данных SQL, DataFrame pandas, R, Power BI, Tableau и любой существующий ETL-инструмент. Когда данные из PDF должны попасть в аналитический или бухгалтерский рабочий процесс, они должны сначала стать CSV.
| CSV | ||
|---|---|---|
| Назначение | Визуальное распространение, печать, архивация | Загрузка и анализ данных |
| Структура | Координаты страницы, нет реальных таблиц | Строки и столбцы изначально |
| Редактирование | Сложно, требуется PDF-редактор | Открывается в любом текстовом или табличном редакторе |
| Ручное копирование | Теряет структуру таблицы | Точно сохраняет структуру |
| Рабочий процесс | Документ в конце конвейера | Начало конвейера данных |
Важно: автоматическое извлечение PDF в CSV работает с текстовыми PDF — теми, что сгенерированы из бухгалтерских систем, движков отчётов или сохранены как PDF из таблицы или базы данных. Сканированные PDF (изображения бумаги) не содержат текстового слоя и требуют OCR как отдельного этапа предобработки перед любым извлечением CSV.
Скачайте установщик по ссылке выше и запустите его на вашем сервере или рабочей станции Windows. Установка занимает меньше минуты. Конвертер парсит текстовый слой PDF напрямую — внешний PDF-просмотрщик, Acrobat или установка Office не требуются.
Откройте cmd.exe или PowerShell. Исполняемый файл конвертера — PDFConverter.exe, расположенный в папке установки (обычно C:\Program Files\CoolUtils\TotalPDFConverterX\). Добавьте его в системную переменную PATH или используйте полный путь в командах.
Простейшая команда извлекает таблицы из всех PDF-файлов в папке в CSV:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c CSV
Эта команда обрабатывает каждый файл .pdf в папке C:\Reports\ и сохраняет полученные CSV-файлы в C:\Output\. Каждый PDF создаёт один CSV с тем же базовым именем. Многостраничные PDF по умолчанию объединяются в один CSV на каждый исходный файл.
Управляйте форматом CSV с помощью дополнительных флагов:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c CSV -CSVDelimiter ; -CSVQuotation " -Encoding UTF-8 -log C:\Logs\pdf2csv.log
-CSVDelimiter ; — разделитель полей (запятая, точка с запятой, табуляция, вертикальная черта)-CSVQuotation " — оборачивать текстовые поля в двойные кавычки для защиты запятых внутри ячеек-Encoding UTF-8 — кодировка вывода (UTF-8, UTF-16, ANSI) для корректной обработки нелатинских символов-log C:\Logs\pdf2csv.log — записать лог конвертации для проверкиСохраните команду в файле .bat и запланируйте его через Планировщик задач Windows:
@echo off "C:\Program Files\CoolUtils\TotalPDFConverterX\PDFConverter.exe" C:\Incoming\*.pdf C:\Archive\CSV\ -c CSV -CSVDelimiter ; -Encoding UTF-8 -log C:\Logs\pdf2csv.log
Эта команда запускает извлечение каждую ночь (или с любым заданным интервалом) и записывает лог-файл, чтобы вы могли проверить результаты. Свяжите её со следующим этапом, который импортирует CSV-файлы в вашу базу данных или аналитическое хранилище.
Total PDF Converter X включает полный интерфейс ActiveX. Вы можете вызывать конвертер из любой COM-совместимой среды — .NET, VBScript, PHP, Python, Ruby или ASP. Это позволяет встроить извлечение PDF в CSV в ваше веб-приложение, интранет-портал или рабочий процесс обработки документов без запуска командной строки.
Пример (C#/.NET):
PDFConverterX Cnv = new PDFConverterX();
Cnv.Convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.csv", "-c CSV -CSVDelimiter ; -Encoding UTF-8 -log c:\\Logs\\pdf.log");
Пример (PHP):
$c = new COM("PDFConverter.PDFConverterX");
$c->convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.csv", "-c CSV -CSVDelimiter ; -Encoding UTF-8 -log c:\\Logs\\pdf.log");
Тот же вызов работает из ASP.NET, VBScript, Python, Ruby, Perl и JavaScript (Windows Script Host). Ваше веб-приложение может принимать загруженные PDF-файлы и возвращать готовые к импорту CSV-данные пользователю в реальном времени.
| Функция | Онлайн-конвертеры | Total PDF Converter X |
|---|---|---|
| Пакетная обработка | По одному файлу за раз | Неограниченное количество файлов за раз |
| Конфиденциальность файлов | Файлы загружаются на сторонний сервер | Файлы не покидают ваш компьютер |
| Конфиденциальные данные | Рискованно — банковские выписки, зарплата, отчётность | Безопасно — обработка на месте |
| Ограничения по размеру файла | Обычно лимит 5–25 МБ | Без введённых ограничений |
| Управление разделителями | Только запятая, без выбора | Запятая, точка с запятой, табуляция, вертикальная черта |
| Управление кодировкой | Часто только ANSI, ломает Unicode | Выбираемые UTF-8, UTF-16, ANSI |
| Автоматизация | Только вручную | Командная строка, .bat, Планировщик задач, ActiveX |
| Серверное развёртывание | Невозможно | Разработан для серверов, GUI не требуется |
| Требуется интернет | Да | Нет |
Конвертер парсит текстовый слой PDF и реконструирует структуру строк и столбцов на основе координат и выравнивания. Многоколоночные макеты отчётов, объединённые заголовки и таблицы, охватывающие несколько страниц, обрабатываются за один проход — не как набор разрозненных слов.
Total PDF Converter X разработан для автоматической работы. Никаких окон GUI, диалоговых окон, запросов подтверждения, зависимости от Acrobat. Он работает тихо из командной строки или как часть сервиса — именно то, что нужно продакшен-конвейеру извлечения.
Банковские выписки с немецкими умляутами, польскими диакритиками, кириллическими именами магазинов или китайскими контрагентами остаются читаемыми в выводе CSV. -Encoding UTF-8 в командной строке, и итоговый файл чисто импортируется в любую современную базу данных или BI-инструмент.
Тот же инструмент командной строки конвертирует PDF в DOC, XLS, HTML, TXT, TIFF, JPEG и другие форматы. Одна установка покрывает любую цель конвертации PDF, которая может вам понадобиться. Замените -c CSV на -c XLS, и вы получите книгу Excel с теми же функциями пакетной обработки и автоматизации.
(30 дней, без email и кредитной карты)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"Квартальные релизы по прибыли приходят в виде PDF, и мы моделируем их в Excel. Total PDF Converter X запускается из командной строки по целой папке отчётов 10-Q и за минуту выдаёт чистый CSV. Многоколоночные таблицы и объединённые заголовки выходят корректно структурированными, что было камнем преткновения с двумя предыдущими инструментами, которые мы пробовали. Разделитель точка с запятой и флаг UTF-8 означают, что европейские эмитенты больше не ломают наш импорт."
Caroline Whitfield Senior Financial Analyst, Mid-Market Equity Research
"Мы ежедневно загружаем сотни банковских выписок для сверки. Обёртка из .bat-скрипта вокруг PDFConverter.exe сбрасывает CSV-файлы в горячую папку, а наш ETL-конвейер их подбирает. Нулевой след GUI на сервере, никакого лицензирования Acrobat, и лог-файл даёт нам бумажный след для аудита. Настройка заняла около часа, включая тестирование ActiveX из нашего внутреннего C#-инструмента."
Rohan Mehta Data Engineer, Banking Operations
"Полевые проекты часто передают нам PDF-главные книги из клиентских систем. Конвертация их в CSV раньше означала утомительное копирование или оплату импорта в IDEA. Теперь мы запускаем конвертер с USB-установленной копии и загружаем CSV прямо в наши аналитические рабочие документы. Сканированные PDF всё ещё требуют OCR на входе, но для родных PDF распознавание таблиц надёжно. Документация могла бы быть подробнее, но поддержка ответила в течение дня."
Anika Larsen Audit Specialist, Big Four Practice
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c CSV. Она извлекает таблицы из каждого PDF в исходной папке и сохраняет их как CSV-файлы. Добавьте флаги -CSVDelimiter ;, -Encoding UTF-8 или -log для управления выводом.-CSVDelimiter и затем символ. -CSVDelimiter ; для точки с запятой (часто используется в европейских локалях, где запятая — десятичный разделитель), -CSVDelimiter \t для табуляции или -CSVDelimiter | для вертикальной черты. По умолчанию — запятая.-Encoding UTF-8 в командную строку. Это создаёт CSV-файлы в кодировке UTF-8, которые сохраняют немецкие умляуты, польские диакритики, кириллицу, китайские, японские и любые другие Unicode-символы, присутствующие в PDF. Также поддерживаются UTF-16 и ANSI.-CSVQuotation ", чтобы оборачивать текстовые поля в двойные кавычки. Конвертер экранирует встроенные кавычки по RFC 4180, поэтому значения вроде "Smith, John" переживают переход в Excel, pandas или любой стандартный CSV-парсер без нарушения количества столбцов.PDFConverter.PDFConverterX). Вы можете вызывать его из .NET, PHP, Python, VBScript, ASP, Ruby, Perl и любой другой COM-совместимой среды для встраивания извлечения PDF в CSV прямо в ваше приложение.
string src = @"C:\test\Source.pdf";
string dest = @"C:\test\Dest.docx";
var cnv = new PDFConverterX();
cnv.Convert(src, dest, "-cDOC -log c:\\test\\PDF.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\PDFConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.pdf";
var outPath = Path.GetTempFileName() + ".docx";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"\"{srcPath}\" \"{outPath}\" -cDOC";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("PDFConverter.PDFConverterX")
C.Convert "c:\test\source.pdf", "c:\test\dest.docx", "-cDOC -log c:\test\PDF.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("PDFConverter.PDFConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.docx"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.pdf", "C:\www\ASP", "-cDOC -log c:\html.log")
set C = nothing
$src="C:\\test\\test.pdf";
$dest="C:\\test\\test.docx";
if (file_exists($dest)) unlink($dest);
$c= new COM("PDFConverter.PDFConverterX");
$c->convert($src,$dest, "-cDOC -log c:\\test\\PDF.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('PDFConverter.PDFConverterX')
src = "C:\\test\\test.pdf"
dest = "C:\\test\\test.docx"
c.convert(src, dest, "-cDOC -log c:\\test\\PDF.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("PDFConverter.PDFConverterX")
src = "C:\\test\\test.pdf"
dest = "C:\\test\\test.docx"
c.convert(src, dest, "-cDOC -log c:\\test\\PDF.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('PDFConverter.PDFConverterX');
c.Convert('c:\test\source.pdf', 'c:\test\dest.docx', '-cDOC -log c:\test\PDF.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("PDFConverter.PDFConverterX");
c.Convert("C:\\test\\source.pdf", "C:\\test\\dest.docx", "-cDOC");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.pdf"; my $dest = "C:\\test\\test.docx"; my $c = CreateObject Win32::OLE 'PDFConverter.PDFConverterX'; $c->convert($src, $dest, "-cDOC -log c:\\test\\PDF.log") print $c->ErrorMessage if -e $dest;
Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.