раздел 03
Как перевести документы в лёгкие форматы
Самый быстрый способ - попросить агента. Он сам поставит нужный инструмент, прогонит папку и покажет, что получилось. Но полезно знать, какие инструменты он возьмёт, чтобы проверить результат и поправить руками, если что-то пошло не так.
Через агента
Положите исходники в отдельную папку и дайте задачу:
В папке _source/ лежат docx-файлы. Переведи каждый в Markdown с тем же
именем и положи рядом в корень проекта (report.docx -> report.md).
Сохрани заголовки, списки и таблицы. Ничего не пересказывай и не
сокращай: текст должен совпадать с оригиналом слово в слово.
Картинки вынеси в папку images/ и подключи ссылками.
После конвертации выведи список файлов и для каждого - число таблиц
в исходнике и в результате.
Последняя строка важна: она заставляет агента проверить себя. Если в docx было четыре таблицы, а в md три - вы узнаете сразу.
Для таблиц Excel:
В _source/ лежит clients.xlsx с тремя листами. Сохрани каждый лист
отдельным CSV в кодировке UTF-8 с разделителем-запятой:
clients-active.csv, clients-archive.csv, clients-leads.csv.
Первая строка - названия колонок. Формулы заменить на значения.
Покажи первые три строки каждого файла и число строк.
Инструменты, которые он возьмёт
pandoc
# docx в Markdown (диалект по умолчанию - pandoc markdown)
pandoc report.docx -o report.md
# в GitHub-flavored Markdown: таблицы через |, привычная разметка
pandoc report.docx -t gfm -o report.md
# картинки вынести в папку images/ рядом
pandoc report.docx -t gfm --extract-media=images -o report.md
# вся папка разом
for f in _source/*.docx; do
pandoc "$f" -t gfm --extract-media=images -o "$(basename "${f%.docx}").md"
done
Вариант с -t gfm почти всегда предпочтительнее: он даёт таблицы через вертикальные черты, которые агент читает лучше всего.
Excel и Google Sheets
В Excel: «Файл - Сохранить как - CSV UTF-8 (разделители - запятые)». Именно вариант с UTF-8, иначе на Windows кириллица сохранится в кодировке Windows-1251 и агент увидит вопросики. Один лист - один файл: Excel экспортирует только активный лист, остальные надо сохранять отдельно.
В Google Sheets: «Файл - Скачать - CSV (текущий лист)». Кодировка всегда UTF-8.
Google Docs
«Файл - Скачать - Markdown (.md)». Если пункта нет, есть обходной путь: скачать как docx и прогнать через pandoc, или «Обычный текст (.txt)», если разметка не нужна.
# текст с сохранением расположения (колонки, таблицы)
pdftotext -layout contract.pdf contract.txt
# без -layout: сплошной текст, лучше для абзацев без таблиц
pdftotext contract.pdf contract.txt
Результат - TXT. Если в документе есть явные разделы, стоит потратить пять минут и расставить заголовки ##, превратив его в Markdown. Или попросить агента: «расставь заголовки по разделам, ничего не меняя в тексте».
Сканы
Проверить, есть ли в PDF текстовый слой, просто: попробуйте выделить текст мышью в просмотрщике. Не выделяется - это картинка, нужен OCR. Дальше лучше не выбирать инструмент самому, а сказать агенту:
В _source/scan.pdf нет текстового слоя. Подбери и поставь OCR-инструмент
под мою систему, распознай документ на русском и сохрани в scan.md.
Разбей на разделы по заголовкам, которые видны в скане.
Отметь в конце файла места, где распознавание неуверенное.
Чек-лист после конвертации
Конвертер отработал без ошибок - это ещё не значит, что всё на месте. Откройте результат и пройдитесь:
- Таблицы. Число таблиц совпадает с исходником, в каждой столько же строк и колонок, объединённые ячейки не съехали.
- Нумерация. Нумерованные списки идут 1, 2, 3, а не 1, 1, 1. Многоуровневые списки сохранили вложенность.
- Картинки. Лежат в папке рядом, ссылки на них рабочие. Если картинки не нужны для работы - удалить ссылки, чтобы агент не пытался их открыть.
- Спецсимволы. Кавычки, тире, неразрывные пробелы, символы валют. Кракозябры вместо кириллицы - значит, проблема с кодировкой, пересохранить в UTF-8.
- Заголовки. Уровни вложенности соответствуют исходнику: раздел -
##, подраздел -###. - Колонтитулы и номера страниц. Из PDF они часто попадают в текст между абзацами - вычистить.
- Сноски. pandoc выносит их в конец, pdftotext может вставить прямо в текст. Проверить, что сноска не разорвала предложение.
Если документов много, чек-лист тоже можно отдать агенту: «пройди по каждому md в папке и проверь пункты списка, отчёт таблицей».
Частые вопросы
pandoc не поставился или его нет в системе
brew install pandoc, на Ubuntu - apt install pandoc, на Windows - установщик с сайта или winget.