Asosiy kontentga o‘tish
AI qo‘llanmalari

anydoc yordamida Office hujjatlarini Markdown formatiga aylantirish

Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV va PDF fayllarini izchil GitHub uslubidagi Markdown formatiga aylantirish uchun anydoc dasturini o‘rnatish va undan foydalanishni o‘rganing. Ushbu qo‘llanmada CLI, til bog‘lamalari, brauzerdagi WebAssembly, formatni aniqlash, hujjat resurslari, xatolarni qayta ishlash va amaliy integratsiya bo‘yicha maslahatlar yoritiladi.

anydoc yordamida Office hujjatlarini Markdown formatiga aylantirish

anydoc nima?

anydoc hujjatlarni toza GitHub-Flavored Markdown formatiga aylantiruvchi tezkor Rust kutubxonasidir. U Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV va matnga asoslangan PDF fayllarini qo‘llab-quvvatlaydi. Loyiha, shuningdek, buyruq satri interfeysi hamda Node.js, Python va brauzerga asoslangan WebAssembly uchun bog‘lamalarni taqdim etadi.

Kutubxona bir nechta hujjat formatlarini qabul qilib, ularni yagona va izchil Markdown ko‘rinishida qayta ishlashi kerak bo‘lgan konveyerlar uchun mo‘ljallangan. Qo‘llab-quvvatlanadigan har bir ofis formati umumiy hujjat modeliga ajratib tahlil qilinadi va bir xil Markdown serializatoridan o‘tkaziladi. Bu jadvallar, ekranlash, sarlavhalar, izohlar, havolalar, ro‘yxatlar va boshqa tuzilmalarni formatlar bo‘ylab izchil saqlaydi.

Konvertatsiya mashinaviy o‘rganish modellar yoki tashqi xizmatlarsiz, mahalliy qurilmada bajariladi. README faylida benchmark natijalariga ko‘ra, har bir hujjat uchun konvertatsiyaning median vaqti besh millisekunddan kam ekani qayd etilgan. Matnga asoslangan PDF fayllari mahalliy ravishda pdf-inspector orqali qayta ishlanadi.

anydoc OCR bajarmaydi. O‘qiladigan matnni o‘z ichiga olmagan, faqat rasmlardan iborat yoki skanerlangan PDF fayllari qo‘llab-quvvatlanmaydigan format sifatida qayd etilishi mumkin. Firecrawl Parse OCR ham talab qilinadigan ish jarayonlari uchun loyiha tomonidan tilga olingan joylashtirilgan muqobil variantdir.

Asosiy imkoniyatlar

  • Izchil Markdown: Barcha ofis formatlari umumiy hujjat modeli va serializatordan foydalanadi.
  • Tuzilmali chiqish: Qo‘llab-quvvatlanadigan tuzilmalarga sarlavhalar va ankorlar, havolalar, ichki havolalar, ro‘yxatlar, jadvallar, iqtibos bloklari, izohlar, so‘nggi izohlar, ma’ruzachi qaydlari, qator ichidagi kod va kod bloklari kiradi.
  • Formatlashni saqlash: Qalin, kursiv, ustidan chizilgan matn, vazifa ro‘yxatlari, ichma-ich ro‘yxatlar, manba raqamlashi, birlashtirilgan jadval kataklari va sarlavha qatorlari aks ettirilishi mumkin.
  • Ichki o‘rnatilgan resurslar: Ichki o‘rnatilgan rasmlar va obyektlar Markdown’da alternativ matn sifatida ko‘rinadi, ularning xom baytlari va media turlari esa hujjat modeli orqali mavjud bo‘lib qoladi.
  • Kontentga asoslangan aniqlash: PDF, RTF, OLE va ZIP asosidagi hujjat formatlari faqat fayl kengaytmalariga tayanmasdan, baytlaridan aniqlanadi.
  • Bloklamaydigan bog‘lamalar: Node.js konvertatsiyasi libuv thread pool’dan foydalanadi, Python esa konvertatsiya vaqtida Global Interpreter Lock’ni bo‘shatadi.
  • Tiplangan paketlar: TypeScript turlari va Python stub fayllari kiritilgan.
  • Agent integratsiyasi: Loyiha mos kodlash agentlariga anydoc CLI’dan foydalanishni o‘rgatuvchi Agent Skill’ni o‘z ichiga oladi.

Qo‘llab-quvvatlanadigan fayl formatlari

  • Word: .doc, .docx va .docm
  • PowerPoint: .ppt, .pps, .pot, .pptx, .pptm, .ppsx va .ppsm
  • Excel: .xls, .xlsx, .xlsm va .xlsb
  • OpenDocument: .odt, .ods va .odp
  • Boshqa formatlar: .rtf, .epub, .csv va .pdf

O‘rnatish usulini tanlang

Shell skriptlar va bir martalik konvertatsiyalar uchun CLI’dan foydalaning. Hujjat konvertatsiyasi ilovaning bir qismi bo‘lsa, Node.js yoki Python’ni, native integratsiya uchun Rust’ni, fayllarni bevosita brauzerda konvertatsiya qilish kerak bo‘lsa, WebAssembly’ni tanlang.

CLI’ni o‘rnatish

Oldindan yig‘ilgan CLI’ni doimiy o‘rnatmasdan, npx yordamida ishga tushirishingiz mumkin:

npx @firecrawl/anydoc report.docx

Platformangiz uchun oldindan yig‘ilgan ikkilik fayl birinchi ishga tushirishda yuklab olinadi. anydoc buyrug‘ini doimiy ravishda mavjud qilish uchun uni global o‘rnating:

npm install -g @firecrawl/anydoc
anydoc --help

Node.js uchun o‘rnatish

npm install @firecrawl/anydoc

Python uchun o‘rnatish

pip install firecrawl-anydoc

Brauzer WebAssembly uchun o‘rnatish

npm install @firecrawl/anydoc-wasm

Shuningdek, brauzer demosini sinab ko‘rishingiz mumkin. Demo WebAssembly kutubxonasini mahalliy qurilmada ishga tushiradi, shuning uchun tanlangan fayllar qurilmadan tashqariga chiqmaydi.

Rust uchun o‘rnatish

cargo add anydoc

Agent Skill’ni o‘rnatish

Mos agentga hujjatlarni anydoc CLI yordamida qanday konvertatsiya qilishni o‘rgatish uchun kiritilgan skill’ni o‘rnating:

npx skills add firecrawl/anydoc

README mos mijozlar qatorida Claude Code, Codex, Cursor va OpenCode’ni sanab o‘tadi.

CLI yordamida fayllarni konvertatsiya qilish

Markdown’ni standart chiqishga yozish

Manba hujjatini birinchi argument sifatida uzating. Hosil qilingan Markdown standart chiqishga chiqariladi:

npx @firecrawl/anydoc report.docx

Bu natijani ko‘rish yoki uni boshqa buyruqqa uzatish kerak bo‘lganda qulay.

Markdown’ni faylga saqlash

Chiqish faylini tanlash uchun -o parametridan foydalaning:

npx @firecrawl/anydoc slides.pptx -o slides.md

Standart kirishdan ma’lumotlarni konvertatsiya qilish

Standart kirishdan baytlarni o‘qish uchun kirish yo‘li sifatida - belgisidan foydalaning. CSV kontentida ishonchli imzo mavjud emas, shuning uchun uning formatini aniq ko‘rsating:

npx @firecrawl/anydoc - --format csv < data.csv

anydoc’dan Node.js’da foydalanish

Node.js paketi fayl yo‘llari, bayt massivlari va umumiy hujjat modeli uchun alohida funksiyalarni taqdim etadi.

Fayl yo‘lini konvertatsiya qilish

import { toMarkdown } from '@firecrawl/anydoc';

const markdown = await toMarkdown('report.docx');
console.log(markdown);

Baytlarni konvertatsiya qilish

Fayl allaqachon yuklangan, yuklab olingan yoki xotiraga o‘qilgan bo‘lsa, toMarkdownBytes funksiyasidan foydalaning:

import { toMarkdownBytes } from '@firecrawl/anydoc';

const markdown = await toMarkdownBytes(bytes);

Taniqli imzolarga ega formatlar uchun anydoc formatni kontentdan aniqlaydi. CSV bunday imzoga ega emas, shuning uchun format nomini uzating:

const markdown = await toMarkdownBytes(bytes, 'csv');

Hujjat modelini va resurslarni saqlab qolish

Yakuniy Markdown satridan ko‘proq ma’lumot kerak bo‘lsa, toDocument yordamida umumiy hujjat modelida to‘xtang:

import { toDocument } from '@firecrawl/anydoc';

const document = await toDocument(bytes);

Hujjat modeli tahlil qilingan tuzilma va ichki joylashtirilgan resurslarni o‘z ichiga oladi. Markdown ko‘rinishida ularning alternativ matni ishlatilsa ham, ichki resurslarning baytlariga media turlari bilan birga kirish mumkin.

anydoc’dan Python’da foydalanish

Fayl yo‘lini aylantirish

import anydoc

markdown = anydoc.to_markdown("report.docx")
print(markdown)

Xotiradagi baytlarni aylantirish

import anydoc

markdown = anydoc.to_markdown_bytes(data)

CSV kabi imzosiz kiritmalar formatini aniq ko‘rsating:

markdown = anydoc.to_markdown_bytes(data, "csv")

Hujjat modeliga kirish

document = anydoc.to_document(data)

Bu yondashuv ilovangizga faqat seriyalashtirilgan Markdown emas, balki tahlil qilingan hujjat va uning ichki resurslari kerak bo‘lganda foydalidir.

Brauzerda hujjatlarni aylantirish

WebAssembly paketi bayt massivlarini brauzerda lokal ravishda aylantiradi. Aylantirish funksiyalarini chaqirishdan oldin modulni ishga tushiring:

import init, { toMarkdownBytes, toDocument } from '@firecrawl/anydoc-wasm';

await init();

const markdown = toMarkdownBytes(bytes);

Boshqa bog‘lamalarda bo‘lgani kabi, CSV uchun formatni ko‘rsating:

const markdown = toMarkdownBytes(bytes, 'csv');

Hujjat modeli va ichki resurslarni saqlab qolish uchun toDocument dan foydalaning:

const document = toDocument(bytes);

Yuqorida ko‘rsatilgan Node.js API’dan farqli o‘laroq, README’dagi WebAssembly aylantirish chaqiruvlari ishga tushirilgandan so‘ng sinxron ishlaydi.

anydoc’dan Rust’da foydalanish

Fayl yo‘lini aylantirish

let markdown = anydoc::to_markdown("report.docx")?;

Avtomatik aniqlash bilan baytlarni aylantirish

let markdown = anydoc::to_markdown_bytes(&bytes, None)?;

CSV’ni aniq ko‘rsatish

let markdown = anydoc::to_markdown_bytes(
    &bytes,
    anydoc::Format::Csv,
)?;

Hujjat modelini qaytarish

let document = anydoc::to_document(&bytes, None)?;

Formatni aniqlashni tushunish

anydoc PDF sarlavhasi, RTF ochilish guruhi, OLE oqim nomlari va ZIP paketi metama’lumotlari kabi kontent markerlarini tekshiradi. Shu sababli, faylning haqiqiy formatini baytlaridan aniqlash mumkin bo‘lsa, noto‘g‘ri nomlangan fayl ham aylantirilishi mumkin.

Rust baytlar, kengaytmalar va yo‘llarni tekshirish uchun yordamchi funksiyalarni taqdim etadi:

Format::from_bytes(&bytes);
Format::from_extension("pptm");
Format::from_path(Path::new("report.odt"));

Birinchi chaqiruv Some(Format::Docx) kabi aniqlangan formatni yoki hech bir ma’lum kontent markeri mos kelmaganda None qiymatini qaytaradi. Node.js’da formatFromBytes kabi nomlar, Python’da esa anydoc.format_from_bytes kabi nomlar ostida muqobil yordamchi funksiyalar mavjud.

Nega CSV maxsus ishlov berishni talab qiladi

CSV oddiy matn bo‘lib, uni yagona tarzda aniqlaydigan standart bayt imzosiga ega emas. Nomlanmagan CSV baytlarini yoki standart kiritmani aylantirganda, csv ni aniq ko‘rsating. Fayl yo‘lida .csv kengaytmasi mavjud bo‘lsa, uni kengaytma orqali aniqlash mumkin.

Aylantirish xatolarini qayta ishlash

Ma’noli Markdown hosil qilib bo‘lmasa, aylantirish xato qaytaradi. Rust bu holatlarni ConvertError orqali taqdim etadi:

  • Unsupported: Format noma’lum yoki aylantirib bo‘lmaydi, jumladan faqat rasmlardan iborat PDF.
  • Malformed: Fayl tuzilmasi jihatidan yaroqsiz va undan ma’noli kontentni ajratib bo‘lmaydi.
  • Encrypted: Hujjat shifrlangan yoki parol bilan himoyalangan.
  • ResourceLimit: Aylantirish dekompressiya, ichma-ichlik yoki tugunlar soni bilan bog‘liq belgilangan xavfsizlik chegarasidan oshib ketgan.
  • MissingPart: Hujjatning zarur qismi mavjud emas.
  • Io: to_markdown ga uzatilgan faylni o‘qib bo‘lmadi.

Ommaviy qayta ishlash quvuri shifrlangan yoki qo‘llab-quvvatlanmaydigan fayllarni qayd etib, qolgan kiritmalar bilan ishlashni davom ettirishi mumkin:

match anydoc::to_markdown(path) {
    Ok(markdown) => Some(markdown),
    Err(error @ (ConvertError::Encrypted | ConvertError::Unsupported(_))) => {
        unconverted.push((path, error));
        None
    }
    Err(error) => return Err(error),
}

Node.js va WebAssembly’da xato varianti nomi error.code orqali mavjud. Python har bir aylantirish varianti uchun maxsus anydoc.ConvertError quyi sinfini, faylni o‘qib bo‘lmaganda esa OSError ni keltirib chiqaradi.

Ilg‘or integratsiya maslahatlari

Yuklash quvurlari uchun baytlarni aylantirishni afzal ko‘ring

Agar ilovangiz hujjat baytlarini allaqachon yuklash, obyektlar ombori yoki HTTP javobidan olsa, toMarkdownBytes yoki to_markdown_bytes dan foydalaning. Bu fayl yo‘lini talab qilish zaruratini bartaraf etadi va anydoc’ga foydalanuvchi taqdim etgan fayl nomiga ishonish o‘rniga haqiqiy kontentni tekshirish imkonini beradi.

Resurslar muhim bo‘lsa, hujjat modelidan foydalaning

Markdown’ning o‘zida ichki joylashtirilgan obyektlarning xom baytlari bo‘lmaydi. Ichki resurslar va ularning media turlarini saqlash, tekshirish yoki alohida qayta ishlash kerak bo‘lsa, toDocument yoki to_document dan foydalaning.

Skanerlangan PDF’larni alohida ko‘rib chiqing

anydoc’ning o‘rnatilgan PDF qo‘llab-quvvatlashi matnga asoslangan PDF fayllar uchun mo‘ljallangan va OCR’ni o‘z ichiga olmaydi. Faqat rasmlardan iborat PDF fayllarni mahalliy konversiyani qayta-qayta urinish o‘rniga OCR’ni qo‘llab-quvvatlaydigan ish jarayoniga yo‘naltiring.

CSV formatini tanlashni aniq belgilang

Xotirada saqlanadigan aralash kirish ma’lumotlarini qayta ishlashda CSV baytlarini aniq format metama’lumotlari bilan bog‘lang. Boshqa qo‘llab-quvvatlanadigan formatlarni ko‘pincha ularning mazmunidan aniqlash mumkin, ammo CSV uchun nom, kengaytma yoki aniq format argumenti talab qilinadi.

Ishlash muhitining xususiyatlaridan foydalaning

Node.js konversiyasi hodisalar siklini bloklamasdan, libuv oqimlar havzasida ishlaydi. Python konversiya vaqtida GIL’ni bo‘shatadi, bu esa boshqa Python oqimlarining ishlashda davom etishiga imkon beradi. Bu xususiyatlar konversiyani bir vaqtda ishlaydigan ilovalarga integratsiya qilishda foydalidir.

Keyingi bosqichlarda izchil chiqishdan foydalaning

Ofis formatlari bitta serializatorga ega bo‘lgani sababli, keyingi tizimlar Word, PowerPoint, Excel, RTF va OpenDocument kirishlari uchun alohida tozalash qoidalarini yuritish o‘rniga yagona Markdown tuzilmasidan foydalanishi mumkin. Shu sababli anydoc qidiruv indekslash, ma’lumot ajratib olish quvurlari va til modellari uchun tuzilgan matnni tayyorlashga ayniqsa mos keladi.

Konversiya quvuri qanday ishlaydi

  1. anydoc formatni aniqlash uchun hujjat baytlarini yoki mavjud fayl nomi ma’lumotlarini tekshiradi.
  2. Formatga xos parser Word, PowerPoint, Excel, OpenDocument, RTF, EPUB yoki CSV mazmunini o‘qiydi.
  3. Parser bloklar, satr ichidagi elementlar, jadvallar, izohlar va aktivlarni o‘z ichiga olgan umumiy hujjat modelini yaratadi.
  4. Umumiy serializator ushbu modelni GitHub Flavored Markdown formatiga o‘giradi.
  5. PDF pdf-inspector orqali qayta ishlanadi va bevosita Markdown’ga o‘giriladi.

Bu arxitektura serializatorni yaxshilash bir vaqtning o‘zida ko‘plab formatlarga foyda keltirishini anglatadi. Masalan, jadval belgilarini to‘g‘ri qochirish tuzatishi faqat bitta kirish parseri bilan cheklanmaydi.

Unumdorlik va eng mos qo‘llanish sohasi

Repozitoriyda o‘n to‘rtta sinovdan o‘tkazilgan formatni qamrab olgan 100 ta real hujjat bo‘yicha benchmark keltirilgan. anydoc barcha o‘n to‘rtta formatni qamrab oldi, konversiyaning median vaqti 4.4 millisekundni tashkil etdi va ushbu taqqoslashda 81 umumiy sifat ballini oldi. Sifat to‘liqlik, tuzilma, formatlash va tozalik mezonlari bo‘yicha baholandi.

Benchmark natijalari ma’lumotlar to‘plami, qurilma va metodologiyaga bog‘liq, shuning uchun kiritilgan benchmarkdan har qanday ish yuklamasi uchun kafolat sifatida emas, balki loyiha uchun xos dalil sifatida foydalaning. Loyiha ta’riflagan eng mos holat — aralash ofis hujjatlari to‘plamini qabul qiladigan va tezkor, tuzilgan hamda izchil Markdown’ga ehtiyoj sezadigan quvurdir.

Xulosa

anydoc Rust, Node.js, Python, brauzer va buyruq satri bo‘ylab yagona konversiya ish jarayonini taklif etadi. Tezkor sinov uchun CLI’dan boshlang, so‘ngra ilovangizga mos binding’ni tanlang. Yuklangan fayllar uchun baytga asoslangan konversiyadan foydalaning, CSV formatini aniq belgilang, ichki aktivlar muhim bo‘lsa hujjat modelini saqlang va shifrlangan, noto‘g‘ri tuzilgan, qo‘llab-quvvatlanmaydigan yoki skanerlangan hujjatlarni alohida holatlar sifatida qayta ishlang.