W skrócie: AnyMD konwertuje typowe PDF-y do Markdown w 0,3–0,8 sekundy — 4–10× szybciej niż PyMuPDF4LLM, Marker i docling. Bez kolejek, zadań asynchronicznych i czekania: synchroniczne API oraz przetwarzanie w pamięci w mniej niż sekundę.
AnyMD powstał w Rust nieprzypadkowo. Inne narzędzia do dokumentów działają jako lokalne biblioteki Python (blokujące i jednowątkowe) albo wykorzystują workerów kolejki. AnyMD jest skompilowanym binarium Rust z zoptymalizowanym parsowaniem: plik trafia do usługi, a Markdown wraca w tej samej odpowiedzi HTTP.
Benchmarki
Zmierzono czas konwersji trzech popularnych typów dokumentów w czterech narzędziach, na tym samym sprzęcie (Xeon 8 rdzeni, 16 GB RAM, SSD). Czasy są w sekundach — mniej znaczy lepiej.
| Dokument | Strony | AnyMD | PyMuPDF4LLM | Marker | docling |
|---|---|---|---|---|---|
| PDF badawczy | 12 | 0,4 s | 2,8 s | 4,1 s | 3,2 s |
| Raport biznesowy (PDF) | 48 | 0,8 s | 6,5 s | 14,2 s | 8,9 s |
| Manuskrypt DOCX | 85 | 0,6 s | N/A | N/A | 9,4 s |
| Prezentacja PPTX | 30 slajdów | 0,5 s | N/A | N/A | 5,7 s |
PyMuPDF4LLM i Marker obsługują tylko PDF. docling obsługuje PDF i formaty Office, ale opiera się na Pythonie i ma istotny narzut dla każdego dokumentu. AnyMD obsługuje wszystkie formaty natywnie, z niemal stałym opóźnieniem niezależnie od typu wejścia.
Dlaczego Rust ma znaczenie
Parsowanie dokumentów jest pracą ograniczoną przez CPU: wydobywanie tekstu, analizowanie drzew XML w DOCX/PPTX i odtwarzanie układu z operatorów PDF. Biblioteki Python płacą koszt GIL przy każdej operacji. Binarium Rust kompiluje się do kodu natywnego, bez narzutu i pauz garbage collectora, z pełnym wykorzystaniem wątków.
Różnica nie jest akademicka: 48-stronicowy raport AnyMD konwertuje w 0,8 s, a narzędzia Python w 6–14 s. W potoku RAG przetwarzającym tysiące dokumentów ta różnica szybko rośnie.
Wypróbuj
curl https://anymd.net/api/convert \
-H "Authorization: Bearer your-key" \
-F "file=@report.pdf"
Darmowy pakiet obejmuje 100 stron miesięcznie bez karty. Pobierz klucz API — zajmuje to około 30 sekund.