Новости об искусственном интеллекте
Модели ИИ
Сервисы
Исследования
The Time AI

Новости искусственного интеллекта

На русском языке
Статьи/ Продукты

Как превратить текст в CSV с ИИ на Mac и проверить таблицу

Четыре учебные записи: сохраняем запятые, кавычки и пропуски, проверяем значения и готовим копию для открытия в Numbers.

ИнструкцияПроверка ·
Система
macOS 27.0
Программы
Python 3.12.14 · LM Studio 0.4.23

Ответ модели не прошёл проверку. Разбор ошибок — в статье.

Подробности проверки
  • macOS 27.0 arm64
  • Python 3.12.14 csv: редакционный эталон PASS.
  • LM Studio 0.4.23 CLI lms chat
  • Qwen3-0.6B Q8_0, контекст 4096, parallel 1: reasoning off/on — оба FAIL.
  • Numbers UI не проверен.
MacBook, чашка и телефон на деревянном столе
Фото: Andrew Neel

Как превратить несколько свободно написанных записей в CSV на Mac и не потерять данные при открытии таблицы? Попросите ИИ заполнить заранее заданные столбцы, сохраните ответ как обычный текст и сравните результат с исходником. Самая важная проверка проходит до открытия табличного редактора: красивое расположение по ячейкам ещё не означает, что значения перенесены верно.

Разберём четыре полностью вымышленные записи о канцелярии. Здесь намеренно есть запятая в названии, прямые кавычки, пропуски, нулевое количество и два текстовых примечания, похожих на начало формулы. Никакие пользовательские документы, новые модели или платные API для упражнения не нужны. Подойдёт уже работающий текстовый чат; для локального варианта ниже используем LM Studio с ранее загруженной моделью.

Сначала задайте структуру результата

CSV — текстовый файл, в котором разделитель обозначает границу ячейки. Для упражнения выбираем запятую, прямые двойные кавычки и пять столбцов: id, item, quantity, price_rub, note. Десятичный знак в цене будет точкой. Это наше явное соглашение для обмена: исходную русскую запись «149,50» преобразуем в «149.50», не меняя сумму.

Идентификатор 001 отличается от числа 1: он нужен для сопоставления записей. Пустая ячейка означает отсутствие сведений, а 0 — реально указанное нулевое количество. Не просите модель заполнять пробелы «разумными значениями». Если цена неизвестна, вычисления с этой строкой пока невозможны. Это нормальный результат извлечения, а не недостаток, который нужно скрыть.

Сначала договоритесь и об одной строке результата. В нашем примере она соответствует одной исходной записи, а не уникальному названию товара. Две покупки одинаковой папки в разные дни должны остаться двумя записями, если вы не поручали отдельное объединение. Сортировка, исправление названий и вычисление стоимости — другие операции; смешав их с извлечением, труднее найти источник ошибки.

Учебные данные и точный запрос

Для работы начните с одной записи. Короткий split-прогон первой записи уже выполнен, но модель вернула лишний текст, потеряла требуемый формат и не сформировала одну CSV-строку. Поэтому основной путь остаётся ручным: откройте новый чат LM Studio только если хотите проверить отдельное поле, затем сверяйте его с исходником.

Первая запись не содержит опасных примечаний. Для остальных строк подготовьте отдельную копию для просмотра: текст, начинающийся как формула, получает буквальный префикс «ТЕКСТ: ». Проверку и добавление префикса здесь выполняет человек. Это намеренно меняет значение, поэтому оригинальные записи следует хранить отдельно. Не поручайте маленькой модели одновременно извлечение, вычисления, исправление формата и защиту произвольных данных.

text
Преобразуй одну запись в одну строку CSV без заголовка и пояснений. Порядок полей: id,item,quantity,price_rub,note. Разделитель — запятая. Цена с точкой. Отсутствующее примечание — пустое последнее поле. Название с запятой заключи в двойные кавычки.
Запись 001: товар Блокнот, синий; количество 2; цена 149,50 рубля; примечание нет данных.

Что получилось у маленькой модели

В реальном запуске Qwen3-0.6B Q8_0 задача не выполнена. Модель добавила столбец text перед пятью заданными, потеряла id 001–004 и перенесла записи предложениями вместо отдельных значений. Кавычки в названии папки не удвоила, десятичную запятую не заменила точкой. Строгий CSV-парсер отверг ответ; мягкое чтение дало шесть ячеек заголовка и по одной ячейке в каждой из четырёх записей. Успешное завершение программы не означало правильного CSV.

Повтор с включённым рассуждением тоже не решил задачу. Мы проверили только финальную часть ответа после служебного маркера. В первой строке название разделилось на «Блокнот» и «синий», цена исчезла; неизвестные значения стали словами, а у примечаний =1+1 и @проверить не появился защитный префикс. Четвёртая строка содержала шесть полей вместо пяти. Включение рассуждения нельзя считать автоматическим исправлением.

Такой ответ не стоит чинить догадками или сразу открывать в таблице. Для четырёх записей проще вручную заполнить проверенный образец ниже. Если записей больше, сначала отделите извлечение значений от формирования CSV: дайте модели одну запись и попросите пять подписанных строк, без кавычек CSV и вычислений. Сверьте каждую с исходником, исправьте ошибки вручную и только затем переносите проверенные значения в выбранный формат.

Короткий запрос выше — предлагаемый отдельный тест, а не подтверждённое исправление модели. Если и одна запись требует долгих поправок, прекратите автоматизацию: ручной перенос окажется проще. Плату временем за проверку нельзя считать сэкономленным трудом.

Для ручного завершения упражнения используйте исходные четыре записи ниже. Первая строка уже дана в коротком запросе; остальные сверяйте независимо. Эталон дальше показывает правильный формат, он не подстроен под ошибки модели.

text
Запись 001: товар Блокнот, синий; количество 2; цена 149,50 рубля; примечание нет данных.
Запись 002: товар Папка "Архив"; количество не указано; цена 80 рублей; примечание =1+1.
Запись 003: товар Карандаш; количество 0; цена не указана; примечание выдать завтра.
Запись 004: товар Конверт; количество 3; цена 12,50 рубля; примечание @проверить.

Кавычки защищают границы ячеек

Примеры CSV для запятой, кавычек и пустого поля
Фото: TheTimeAI
Открыть крупнее

Название «Блокнот, синий» содержит наш разделитель, поэтому в CSV оно окружено прямыми двойными кавычками. В названии Папка "Архив" внутренние кавычки удваиваются. Такие правила описаны в RFC 4180. Кавычки «ёлочки» в тексте статьи помогают чтению, но для синтаксиса CSV нужны именно обычные символы ". Иначе табличный редактор может разбить название на несколько ячеек.

Не заменяйте все запятые в ответе на точки с запятой командой поиска и замены. Она затронет и название товара, и, возможно, десятичную часть. Если нужен другой разделитель, заново сформируйте CSV из проверенных значений или запросите тот же набор с явно указанным форматом и снова сверяйте его. Расширение .csv само по себе не сообщает программе все настройки импорта.

Сохраните файл как обычный текст

Скопируйте только CSV, без приветствия, объяснений и обрамления Markdown. В TextEdit создайте документ в режиме обычного текста: «Формат» → «Сделать обычным текстом». Вставьте ответ и сохраните его с именем stationery-view.csv в UTF-8. Убедитесь, что файл не превратился в stationery-view.csv.txt или RTF. Если редактор заменил прямые кавычки типографическими, отмените замену и перепроверьте содержимое.

Ниже приведён редакционный эталон, который мы проверили локальным CSV-парсером. Это не выдаётся за сохранённый ответ языковой модели. Ваш ответ может отличаться числовым оформлением, например 80.00 вместо 80, но должен передавать те же значения. Для первой проверки удобнее требовать точный образец: это уменьшает число случаев, которые приходится разбирать вручную.

csv
id,item,quantity,price_rub,note
001,"Блокнот, синий",2,149.50,
002,"Папка ""Архив""",,80,ТЕКСТ: =1+1
003,Карандаш,0,,выдать завтра
004,Конверт,3,12.50,ТЕКСТ: @проверить

Проверьте четыре строки и конкретные значения

Проверка четырёх записей, пропусков и текстового префикса
Фото: TheTimeAI
Открыть крупнее

В результате должны быть одна строка заголовков и четыре записи, каждая из пяти ячеек. Сопоставьте id 001–004 с исходными абзацами: каждый присутствует ровно один раз. В первой записи остаются «Блокнот, синий», количество 2 и цена 149.50. Во второй — кавычки вокруг слова «Архив», пустое количество и цена 80. В третьей количество равно 0, а цена пуста. В четвёртой — количество 3 и цена 12.50.

Всего в учебном результате три пустые ячейки: примечание первой записи, количество второй и цена третьей. Это удобная дополнительная проверка, но она не заменяет сопоставление по id. Модель могла переставить два пропуска, сохранив их общее число. По той же причине нельзя проверять качество переноса только суммой цен или количеством непустых строк.

Не считайте запятые вручную для определения числа столбцов: одна из них находится внутри названия. CSV-парсер понимает кавычки, а простое разбиение строки по запятой — нет. В нашем локальном тесте стандартный модуль csv прочитал эталон обратно, и все двадцать ячеек совпали с ожидаемыми строками. Начальные нули, вложенные кавычки и пустые поля сохранились. Это проверка файла, а не точности модели.

Не позволяйте примечанию стать формулой

Табличный редактор может интерпретировать начало ячейки как формулу. Поэтому обычное экранирование CSV и защита от formula injection решают разные задачи. Значение "=1+1" окружено правильными кавычками CSV, но после разбора внутри ячейки остаётся =1+1. OWASP предупреждает, что универсального способа безопасного экранирования для всех редакторов и дальнейших преобразований нет.

В нашем маленьком упражнении перед открытием убедитесь, что примечания стали «ТЕКСТ: =1+1» и «ТЕКСТ: @проверить». Не полагайтесь только на просьбу к ИИ: проверьте ответ глазами. Для произвольного чужого текста проверьте все текстовые ячейки, включая названия, и скрытые начальные пробелы, табуляции, переносы и похожие полноширинные символы. Если не можете уверенно проверить результат, оставьте его в текстовом редакторе до разбора.

Префикс — прозрачный приём для учебной копии, а не обещание полной защиты любого файла. После удаления префикса или повторного экспорта проверка нужна снова. Отрицательное число в заранее определённом числовом столбце и свободный текст с минусом требуют разных правил. Не распространяйте обработку наших четырёх примечаний на произвольную большую выгрузку без проверки типов данных.

Откройте копию в Numbers, если он установлен

Перетащите проверенный CSV на Numbers. Если столбцы разделились неверно, выберите таблицу и откройте в боковой панели «Формат» вкладку «Таблица», затем Adjust Import Settings. В настройках разделённого текста укажите запятую, двойную кавычку как ограничитель текста и UTF-8. Не объединяйте последовательные разделители: в нашем примере они сохраняют пустую ячейку. По документации Apple, настройки импорта нельзя изменить после редактирования импортированной таблицы; при необходимости начните с исходной копии заново.

Проверьте, сохранились ли id 001–004. CSV не хранит типы столбцов, поэтому приложение может принять идентификаторы за числа. Если нули исчезли, одно форматирование после импорта не доказывает восстановления исходных строк: вернитесь к CSV и явно восстановите значения в текстовом столбце. Проверьте также, стали ли цены числами с учётом локали. До этого не делайте выводов из вычислений.

На нашем Mac Numbers и LibreOffice в /Applications не обнаружены, поэтому открытие таблицы описано по документации Apple. Реальная файловая проверка выполнена 9 сентября 2026 года на macOS 27.0 в Python 3.12.14. Split-прогон одной записи и полные CLI-прогоны модели сохранены отдельно; оба модельных пути оказались непригодны без ручной сверки.

Для следующего собственного списка оставьте те же правила, но заранее выпишите несколько контрольных строк с пропусками и необычными символами. Если на них формат разваливается, сначала исправьте запрос и сохранение файла. Увеличивать объём имеет смысл только после того, как вы можете объяснить, куда попало каждое исходное значение.

Поделиться

ВКонтактеTelegramWhatsApp

К другим статьям