Перейти до вмісту
Convertube

Файли Markdown: простий текст із домовленостями, і їх більше ніж одна

Що таке файл .md, чому жодні два рендерери не погоджуються щодо нього і як заголовки й списки відновлюються з PDF, що їх не записував. Конвертуйте в браузері.

Коротко

Тип
Документи
Розширення
.md, .markdown
MIME-тип
text/markdown
Також відомий як
MD

Файл .md — це текстовий файл. Немає контейнера, стиснення й нічого двійкового — відкрийте його в Блокноті, і побачите точно те, що він містить. Форматування — це домовленість, а не розмітка: # на початку рядка означає заголовок, дефіс — пункт списку, а рендерер, який знає домовленість, перетворює їх на HTML. У цьому вся ідея, і тому формат пережив кожен редактор форматованого тексту свого покоління: файл читабельний ще до того, як щось його відобразить, і лишиться читабельним, коли того, у чому ви його писали, вже не буде.

Докладніше

Складність у тому, що єдиного Markdown немає. Оригінальна реалізація 2004 року лишила багато випадків невизначеними, тож кожен рендерер вирішив їх по-своєму; CommonMark існує, щоб закріпити ці неоднозначності, а GitHub Flavored Markdown додає поверх нього таблиці, списки завдань і закреслення. Ця ситуація визнана офіційно: коли text/markdown зареєстрували як тип медіа в RFC 7763 у березні 2016 року, реєстрація містила параметр variant саме тому, що сказати, що файл є Markdown, не означає сказати, який саме. Цей сайт видає text/markdown у UTF-8 і використовує лише конструкції, з якими згодні всі діалекти, — заголовки з решіткою, абзаци через порожній рядок, маркери-дефіси й горизонтальні лінії.

Конвертувати PDF у Markdown означає вигадати структуру, якої PDF ніколи не мав. PDF записує розміри шрифту, а не заголовки, тож розміри на сторінці ранжуються, і шість найбільших стають шістьма рівнями заголовків; рядок, який просто більший за основний текст, стає заголовком, хоч би вважав його таким автор чи ні. Зі списками гірше: у PDF узагалі немає конструкції списку, а маркер, який ви бачите, — буквально символ у тексті, тож список уціліє лише тоді, коли цей символ розпізнати й переписати як дефіс. Нумерованим пунктам така допомога не потрібна — «1. » і «1) » уже є Markdown і вже задумані як список.

Дві деталі варто знати, бо вони змінюють сам текст. Рядок, що закінчується дефісом, вважається словом, розірваним переносом, і з’єднується без дефіса; а сусідні рядки китайською чи японською з’єднуються без пробілу між ними, бо ці писемності його там не ставлять. Сторінки розділяються горизонтальною лінією, тож документ на тринадцять сторінок приходить із дванадцятьма такими лініями. Якщо PDF — скан без текстового шару, та сама модель розпізнавання, що й для PDF у Word, спершу читає символи із зображень сторінок на вашому комп’ютері.

Конвертувати інші формати в Markdown

Запитання про Markdown

Чи файл .md — це просто текстовий файл?

Так. Без контейнера, без стиснення, нічого двійкового. Його відкриває будь-який текстовий редактор, а позначки — #, -, ** — це звичайні символи, які можна читати як є.

Який різновид Markdown я отримаю?

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

Чому мій документ перетинають рядки з дефісів?

Це розриви сторінок. Кожен — горизонтальна лінія, що позначає, де закінчилася одна сторінка PDF і почалася наступна, тож документ на тринадцять сторінок повертається з дванадцятьма такими лініями.

Заголовок вийшов не на тому рівні. Чому?

Рівні ранжуються за розміром шрифту, бо PDF зберігає розміри, а не заголовки. Коли документ використовує розмір для виділення, а не для ієрархії, — винесена цитата, великий перший рядок, — ранжування йде за розміром і помиляється з рівнем.

Чи зберігаються таблиці?

Таблиці, намальовані лініями, — так: вони виходять таблицями Markdown, а перший рядок стає заголовком. Таблиці на сканованій сторінці виходять звичайними рядками, бо скан не має ліній для читання. Якщо таблиці — уся причина конвертації, PDF в Excel розкладе кожну на рядки й стовпці, з якими можна працювати.

Чи працює це зі сканованими PDF?

Так. Коли текстового шару немає, ШІ-модель розпізнавання працює у вашому браузері й читає символи із зображень сторінок. Заголовки тоді ранжуються за виміряною висотою рядків, а не за розміром шрифту, і нічого не завантажується.