
anydoc ni nini?
anydoc ni maktaba ya Rust yenye kasi ya kubadilisha hati kuwa GitHub-Flavored Markdown safi. Inasaidia faili za Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, na PDF zenye maandishi. Mradi pia hutoa kiolesura cha mstari wa amri na viunganishi kwa Node.js, Python, na WebAssembly ya kivinjari.
Maktaba imeundwa kwa mifumo ya bomba inayopokea miundo mingi ya hati lakini inahitaji uwakilishi mmoja thabiti wa Markdown. Kila muundo wa ofisi unaoungwa mkono huchanganuliwa kuwa modeli ya hati iliyoshirikiwa na kupitishwa kupitia serializer ile ile ya Markdown. Hii huhifadhi jedwali, escaping, vichwa, maelezo ya chini, viungo, orodha, na miundo mingine kuwa thabiti katika miundo yote.
Ubadilishaji unafanyika ndani bila modeli za ujifunzaji wa mashine au huduma za nje. README inaripoti muda wa mediani wa ubadilishaji chini ya milisekunde tano kwa kila hati katika kipimo chake. PDF zenye maandishi hushughulikiwa ndani kupitia pdf-inspector.
anydoc haifanyi OCR. PDF zenye picha pekee au zilizochanganuliwa zisizo na maandishi yanayosomeka zinaweza kuripotiwa kama haziungwi mkono. Firecrawl Parse ndiyo mbadala ulioandaliwa unaotajwa na mradi kwa mtiririko wa kazi unaohitaji pia OCR.
Vipengele muhimu
- Markdown thabiti: Miundo yote ya ofisi hutumia modeli ya hati iliyoshirikiwa na serializer.
- Matokeo yaliyopangwa: Miundo inayoungwa mkono inajumuisha vichwa na nanga, viungo, marejeleo ya ndani, orodha, jedwali, nukuu za kizuizi, maelezo ya chini, maelezo ya mwisho, maelezo ya mzungumzaji, msimbo wa ndani ya mstari, na vizuizi vya msimbo.
- Uhifadhi wa umbizo: Herufi nene, italiki, kupigwa mstari, orodha za kazi, orodha zilizowekwa ndani, uorodheshaji wa chanzo, seli za jedwali zilizounganishwa, na safu za kichwa zinaweza kuwakilishwa.
- Rasilimali zilizopachikwa: Picha na vitu vilivyopachikwa huonekana kama maandishi mbadala katika Markdown, huku baiti zao ghafi na aina za midia zikisalia kupatikana kupitia modeli ya hati.
- Utambuzi kulingana na maudhui: Miundo ya hati ya PDF, RTF, OLE, na inayotegemea ZIP hutambuliwa kutoka kwa baiti zao badala ya kutegemea tu viendelezi vya faili.
- Viunganishi visivyozuia: Ubadilishaji wa Node.js hutumia kundi la nyuzi la libuv, huku Python ikiachilia Global Interpreter Lock wakati wa ubadilishaji.
- Vifurushi vilivyoandikwa aina: Aina za TypeScript na stubs za Python zimejumuishwa.
- Ujumuishaji wa wakala: Mradi unajumuisha Agent Skill inayofundisha mawakala wa uandishi wa msimbo wanaooana kutumia CLI ya anydoc.
Miundo ya faili inayoungwa mkono
- Word:
.doc,.docx, na.docm - PowerPoint:
.ppt,.pps,.pot,.pptx,.pptm,.ppsx, na.ppsm - Excel:
.xls,.xlsx,.xlsm, na.xlsb - OpenDocument:
.odt,.ods, na.odp - Miundo mingine:
.rtf,.epub,.csv, na.pdf
Chagua njia ya usakinishaji
Tumia CLI kwa skripti za shell na ubadilishaji wa mara moja. Chagua Node.js au Python wakati ubadilishaji wa hati ni sehemu ya programu, Rust kwa ujumuishaji wa asili, au WebAssembly wakati faili lazima zibadilishwe moja kwa moja katika kivinjari.
Sakinisha CLI
Unaweza kuendesha CLI iliyojengwa awali bila usakinishaji wa kudumu kwa kutumia npx:
npx @firecrawl/anydoc report.docxBinary iliyojengwa awali kwa jukwaa lako hupakuliwa katika uendeshaji wa kwanza. Ili kufanya anydoc ipatikane kama amri ya kudumu, isakinishe kwa ujumla:
npm install -g @firecrawl/anydoc
anydoc --helpSakinisha kwa Node.js
npm install @firecrawl/anydocSakinisha kwa Python
pip install firecrawl-anydocSakinisha kwa WebAssembly ya kivinjari
npm install @firecrawl/anydoc-wasmUnaweza pia kujaribu onyesho la kivinjari. Onyesho linaendesha maktaba ya WebAssembly ndani, kwa hivyo faili zilizochaguliwa haziondoki kwenye mashine.
Sakinisha kwa Rust
cargo add anydocSakinisha Agent Skill
Ili kufundisha wakala anayeoana jinsi ya kubadilisha hati kwa CLI ya anydoc, sakinisha ujuzi uliojumuishwa:
npx skills add firecrawl/anydocREADME inaorodhesha Claude Code, Codex, Cursor, na OpenCode miongoni mwa wateja wanaooana.
Badilisha faili kwa CLI
Andika Markdown kwenye matokeo ya kawaida
Pitisha hati chanzo kama hoja ya kwanza. Markdown inayozalishwa huchapishwa kwenye matokeo ya kawaida:
npx @firecrawl/anydoc report.docxHii ni rahisi unapotaka kukagua matokeo au kuyapitisha kwenye amri nyingine.
Hifadhi Markdown kwenye faili
Tumia -o kuchagua faili ya matokeo:
npx @firecrawl/anydoc slides.pptx -o slides.mdBadilisha data kutoka kwa ingizo la kawaida
Tumia - kama njia ya ingizo kusoma baiti kutoka kwa ingizo la kawaida. CSV haina saini ya kuaminika katika maudhui yake, kwa hivyo taja muundo wake wazi:
npx @firecrawl/anydoc - --format csv < data.csvTumia anydoc katika Node.js
Kifurushi cha Node.js hutoa majukumu tofauti kwa njia za faili, safu za baiti, na modeli ya hati iliyoshirikiwa.
Badilisha njia ya faili
import { toMarkdown } from '@firecrawl/anydoc';
const markdown = await toMarkdown('report.docx');
console.log(markdown);Badilisha baiti
Tumia toMarkdownBytes faili ikiwa tayari imepakiwa, kupakuliwa, au kusomwa kwenye kumbukumbu:
import { toMarkdownBytes } from '@firecrawl/anydoc';
const markdown = await toMarkdownBytes(bytes);Kwa miundo yenye saini zinazotambulika, anydoc hugundua muundo kutoka kwa maudhui. CSV haina saini kama hiyo, kwa hivyo pitisha jina la muundo:
const markdown = await toMarkdownBytes(bytes, 'csv');Hifadhi modeli ya hati na mali
Ikiwa unahitaji zaidi ya mfuatano wa mwisho wa Markdown, simama kwenye modeli ya pamoja ya hati kwa kutumia toDocument:
import { toDocument } from '@firecrawl/anydoc';
const document = await toDocument(bytes);Modeli ya hati hubeba muundo uliochanganuliwa na mali zilizopachikwa. Baiti za mali zilizopachikwa zinabaki kupatikana pamoja na aina zao za midia, hata ingawa uwakilishaji wa Markdown hutumia maandishi yao mbadala.
Tumia anydoc katika Python
Badilisha njia ya faili
import anydoc
markdown = anydoc.to_markdown("report.docx")
print(markdown)Badilisha baiti zilizo kwenye kumbukumbu
import anydoc
markdown = anydoc.to_markdown_bytes(data)Taja wazi pembejeo isiyo na saini kama CSV:
markdown = anydoc.to_markdown_bytes(data, "csv")Fikia modeli ya hati
document = anydoc.to_document(data)Mbinu hii ni muhimu wakati programu yako inahitaji hati iliyochanganuliwa na mali zake zilizopachikwa badala ya Markdown iliyopangiliwa pekee.
Badilisha hati katika kivinjari
Kifurushi cha WebAssembly hubadilisha safu za baiti ndani ya kivinjari. Anzisha moduli kabla ya kuita majukumu yake ya ubadilishaji:
import init, { toMarkdownBytes, toDocument } from '@firecrawl/anydoc-wasm';
await init();
const markdown = toMarkdownBytes(bytes);Kama ilivyo kwa viunganishi vingine, toa muundo wa CSV:
const markdown = toMarkdownBytes(bytes, 'csv');Ili kuhifadhi modeli ya hati na mali zilizopachikwa, tumia toDocument:
const document = toDocument(bytes);Tofauti na API ya Node.js iliyoonyeshwa awali, simu za ubadilishaji wa WebAssembly katika README ni za sinkroni baada ya uanzishaji.
Tumia anydoc kutoka Rust
Badilisha njia ya faili
let markdown = anydoc::to_markdown("report.docx")?;Badilisha baiti kwa ugunduzi wa kiotomatiki
let markdown = anydoc::to_markdown_bytes(&bytes, None)?;Taja CSV wazi
let markdown = anydoc::to_markdown_bytes(
&bytes,
anydoc::Format::Csv,
)?;Rudisha modeli ya hati
let document = anydoc::to_document(&bytes, None)?;Elewa ugunduzi wa muundo
anydoc hukagua alama za maudhui kama kichwa cha PDF, kikundi cha ufunguzi cha RTF, majina ya mito ya OLE, na metadata ya kifurushi cha ZIP. Hii inamaanisha faili iliyotajwa vibaya bado inaweza kubadilishwa wakati muundo wake halisi unatambulika kutoka kwa baiti zake.
Rust hutoa vizaidizi vya kukagua baiti, viendelezi, na njia:
Format::from_bytes(&bytes);
Format::from_extension("pptm");
Format::from_path(Path::new("report.odt"));Simu ya kwanza inarudisha muundo uliogunduliwa kama Some(Format::Docx), au None wakati hakuna alama inayojulikana ya maudhui inayolingana. Vizaidizi sambamba vinapatikana katika Node.js chini ya majina kama formatFromBytes na katika Python chini ya majina kama anydoc.format_from_bytes.
Kwa nini CSV inahitaji ushughulikiaji maalum
CSV ni maandishi wazi na haina saini ya kawaida ya baiti inayoitambulisha kipekee. Unapobadilisha baiti za CSV zisizo na jina au pembejeo ya kawaida, toa csv wazi. Ikiwa njia ya faili inajumuisha kiendelezi cha .csv, kiendelezi kinaweza kuitambulisha.
Shughulikia hitilafu za ubadilishaji
Ubadilishaji unarudisha hitilafu wakati hakuna Markdown yenye maana inayoweza kuzalishwa. Rust huonyesha visa hivi kupitia ConvertError:
- Unsupported: Muundo haujulikani au hauwezi kubadilishwa, ikijumuisha PDF yenye picha pekee.
- Malformed: Faili haiwezi kutumika kimuundo na maudhui yenye maana hayawezi kutolewa.
- Encrypted: Hati imesimbwa kwa njia fiche au inalindwa kwa nenosiri.
- ResourceLimit: Ubadilishaji umevuka kikomo cha usalama kilichowekwa kinachohusisha ufunguzi wa msongamano, uwekaji ndani, au idadi ya nodi.
- MissingPart: Sehemu inayohitajika ya hati haipo.
- Io: Faili iliyopitishwa kwa
to_markdownhaikuweza kusomwa.
Mfereji wa uchakataji wa kundi unaweza kurekodi faili zilizosimbwa kwa njia fiche au zisizoungwa mkono na kuendelea na pembejeo zilizobaki:
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),
}Katika Node.js na WebAssembly, jina la toleo la hitilafu linapatikana kupitia error.code. Python huinua daraja ndogo maalum la anydoc.ConvertError kwa kila toleo la ubadilishaji na huinua OSError wakati faili haiwezi kusomwa.
Vidokezo vya juu vya ujumuishaji
Pendelea ubadilishaji wa baiti kwa mifereji ya upakiaji
Ikiwa programu yako tayari inapokea baiti za hati kutoka kwa upakiaji, hifadhi ya vitu, au majibu ya HTTP, tumia toMarkdownBytes au to_markdown_bytes. Hii huepuka hitaji la njia ya faili na inaruhusu anydoc kuchunguza maudhui halisi badala ya kuamini jina la faili lililotolewa na mtumiaji.
Tumia modeli ya hati wakati mali ni muhimu
Markdown pekee haibeba baiti ghafi za vitu vilivyopachikwa. Tumia toDocument au to_document unapohitaji kuhifadhi, kuchunguza, au kuchakata kando mali zilizopachikwa na aina zao za midia.
Shughulikia PDF zilizochanganuliwa kando
Usaidizi wa PDF uliojengwa ndani ya anydoc umekusudiwa kwa PDF zenye maandishi na haujumuishi OCR. Elekeza PDF zenye picha pekee kwenye mchakato wenye uwezo wa OCR badala ya kujaribu mara kwa mara ubadilishaji wa ndani.
Fanya uteuzi wa muundo wa CSV kuwa wazi
Unapochakata pembejeo mchanganyiko zilizo kwenye kumbukumbu, husisha baiti za CSV na metadata wazi ya muundo. Miundo mingine inayotumika mara nyingi inaweza kutambuliwa kutoka kwa maudhui yake, lakini CSV inahitaji jina, kiendelezi, au hoja wazi ya muundo.
Tumia faida ya tabia ya wakati wa utekelezaji
Ubadilishaji wa Node.js unafanyika kwenye kundi la nyuzi za libuv badala ya kuzuia mzunguko wa matukio. Python hutoa GIL wakati wa ubadilishaji, ikiruhusu nyuzi nyingine za Python kuendelea kukimbia. Sifa hizi ni muhimu unapounganisha ubadilishaji katika programu zinazoendesha kwa wakati mmoja.
Tumia matokeo thabiti katika hatua zinazofuata
Kwa sababu miundo ya ofisi inashiriki serializer moja, mifumo inayofuata inaweza kutumia muundo mmoja wa Markdown badala ya kudumisha sheria tofauti za usafishaji kwa pembejeo za Word, PowerPoint, Excel, RTF, na OpenDocument. Hii inafanya anydoc kufaa hasa kwa uorodheshaji wa utafutaji, mifumo ya uchimbaji, na utayarishaji wa maandishi yaliyopangwa kwa modeli za lugha.
Jinsi bomba la ubadilishaji linavyofanya kazi
- anydoc hukagua baiti za hati au taarifa ya jina la faili inayopatikana ili kubaini muundo.
- Kichanganuzi cha muundo husika husoma maudhui ya Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, au CSV.
- Kichanganuzi huunda modeli ya hati iliyoshirikiwa yenye vizuizi, vipengele vya ndani, jedwali, vidokezo vya chini, na mali.
- Serializer ya pamoja hubadilisha modeli hiyo kuwa GitHub-Flavored Markdown.
- PDF inashughulikiwa kupitia pdf-inspector na kubadilishwa moja kwa moja kuwa Markdown.
Usanifu huu unamaanisha kuwa uboreshaji wa serializer unaweza kunufaisha miundo mingi kwa wakati mmoja. Kwa mfano, marekebisho ya kuepuka jedwali hayazuiliwi kwa kichanganuzi kimoja cha pembejeo.
Utendaji na ulinganifu bora
Hifadhi inaripoti kipimo cha utendaji juu ya hati 100 za ulimwengu halisi zinazojumuisha miundo kumi na nne iliyojaribiwa. anydoc ilishughulikia zote kumi na nne, ilifikia muda wa wastani wa ubadilishaji wa milisekunde 4.4, na ilipata alama ya jumla ya ubora ya 81 katika ulinganisho huo. Ubora ulihukumiwa kwa ukamilifu, muundo, uumbizaji, na usafi.
Matokeo ya kipimo cha utendaji yanategemea mkusanyo, maunzi, na mbinu, kwa hivyo tumia kipimo kilichojumuishwa kama ushahidi maalum wa mradi badala ya dhamana kwa kila mzigo wa kazi. Ulinganifu bora zaidi unaoelezwa na mradi ni bomba linalopokea mkusanyo mchanganyiko wa hati za ofisi na linalohitaji Markdown ya haraka, iliyopangwa, na thabiti.
Hitimisho
anydoc hutoa mchakato mmoja wa ubadilishaji katika Rust, Node.js, Python, kivinjari, na mstari wa amri. Anza na CLI kwa jaribio la haraka, kisha chagua kiunganishi kinacholingana na programu yako. Tumia ubadilishaji wa msingi wa baiti kwa faili zilizopakiwa, bainisha CSV waziwazi, hifadhi modeli ya hati wakati mali zilizopachikwa zinahitajika, na shughulikia hati zilizosimbwa, zilizoharibika, zisizotumika, au zilizochanganuliwa kama kesi tofauti.
