{"_id":"@drmoyassine/liteparse","_rev":"6-1ac3482559bd2bab266a3f6b1ea2fbf5","name":"@drmoyassine/liteparse","dist-tags":{"latest":"0.5.0"},"versions":{"0.4.0":{"name":"@drmoyassine/liteparse","version":"0.4.0","keywords":["document","extraction","pdf","docx","xlsx","ocr","vision","vlm","isomorphic","pdfjs"],"author":{"name":"drmoyassine"},"license":"MIT","_id":"@drmoyassine/liteparse@0.4.0","maintainers":[{"name":"drmoyassine","email":"drmoyassine@gmail.com"}],"homepage":"https://github.com/drmoyassine/liteparse#readme","bugs":{"url":"https://github.com/drmoyassine/@drmoyassine/liteparse/issues"},"dist":{"shasum":"fa41a866fde1222782351514574bdf53914dc3d6","tarball":"https://registry.npmjs.org/@drmoyassine/liteparse/-/liteparse-0.4.0.tgz","fileCount":85,"integrity":"sha512-KV2cM4+dMl5voVfFZH5biYo6eZBZUbptSDCIhpuHXu/cc6C3+faoCK3Yi6053SglYRy7WwwS1mCaOu6mBznTjQ==","signatures":[{"sig":"MEQCIDzMoLRl159C4xQl2JfCcgJncqFiQ5BLnn+cDzxZ+ZrPAiAQssEGuPOEkzr2Y2Dqw5xrUB0iHmrnK0seJNRR1nsXpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2888223},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./stt/server":{"types":"./dist/stt/server.d.ts","import":"./dist/stt/server.js","require":"./dist/stt/server.cjs"},"./vlm/server":{"types":"./dist/vlm/server.d.ts","import":"./dist/vlm/server.js","require":"./dist/vlm/server.cjs"},"./stt/worklet":{"types":"./dist/stt/worklet.d.ts","import":"./dist/stt/worklet.js","require":"./dist/stt/worklet.cjs"},"./raster/sharp":{"types":"./dist/raster/sharp.d.ts","import":"./dist/raster/sharp.js","require":"./dist/raster/sharp.cjs"},"./stt/dictation":{"types":"./dist/stt/dictation.d.ts","import":"./dist/stt/dictation.js","require":"./dist/stt/dictation.cjs"},"./engines/rapidocr":{"types":"./dist/engines/rapidocr.d.ts","import":"./dist/engines/rapidocr.js","require":"./dist/engines/rapidocr.cjs"},"./engines/moonshine":{"types":"./dist/engines/moonshine.d.ts","import":"./dist/engines/moonshine.js","require":"./dist/engines/moonshine.cjs"},"./ocr/rapidocr-server":{"types":"./dist/ocr/rapidocr-server.d.ts","import":"./dist/ocr/rapidocr-server.js","require":"./dist/ocr/rapidocr-server.cjs"},"./stt/dictation-worker":{"types":"./dist/stt/dictation-worker.d.ts","import":"./dist/stt/dictation-worker.js","require":"./dist/stt/dictation-worker.cjs"},"./stt/moonshine-server":{"types":"./dist/stt/moonshine-server.d.ts","import":"./dist/stt/moonshine-server.js","require":"./dist/stt/moonshine-server.cjs"}},"gitHead":"7800f02bb1b2864be7edf13ae6381e2ffc8208ce","scripts":{"test":"vitest run","build":"tsup","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node scripts/copy-ort-wasm.mjs && node scripts/copy-pdfjs-worker.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"drmoyassine","email":"drmoyassine@gmail.com"},"repository":{"url":"git+https://github.com/drmoyassine/liteparse.git","type":"git"},"_npmVersion":"12.0.2","description":"Isomorphic document text extraction (PDF, Office, images) with swappable raster/OCR/VLM adapters. Runs in the browser, Node, and Deno/edge.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"xlsx":"https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz","mammoth":"^1.12.0","dommatrix":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jszip":"^3.10.1","sharp":"^0.34.5","canvas":"^3.2.3","vitest":"^2.1.4","prettier":"^3.3.3","pdfjs-dist":"^4.8.0","typescript":"^5.6.3","@types/node":"^22.7.0","fake-indexeddb":"^6.0.0","@napi-rs/canvas":"^0.1.100","onnxruntime-web":"^1.27.0","onnxruntime-node":"^1.27.0"},"peerDependencies":{"pdfjs-dist":">=4","onnxruntime-web":">=1.20","onnxruntime-node":">=1.20"},"peerDependenciesMeta":{"pdfjs-dist":{"optional":true},"onnxruntime-web":{"optional":true},"onnxruntime-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/liteparse_0.4.0_1788257500525_0.778622994560694","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@drmoyassine/liteparse","version":"0.4.1","keywords":["document","extraction","pdf","docx","xlsx","ocr","vision","vlm","isomorphic","pdfjs"],"author":{"name":"drmoyassine"},"license":"MIT","_id":"@drmoyassine/liteparse@0.4.1","maintainers":[{"name":"drmoyassine","email":"drmoyassine@gmail.com"}],"homepage":"https://github.com/drmoyassine/liteparse#readme","bugs":{"url":"https://github.com/drmoyassine/@drmoyassine/liteparse/issues"},"dist":{"shasum":"dc913d8730b6a28e472a3d4861db9cbddefa840b","tarball":"https://registry.npmjs.org/@drmoyassine/liteparse/-/liteparse-0.4.1.tgz","fileCount":85,"integrity":"sha512-lQ1/TnvoNdYJ06FGwy+IimZO/rXvl5sw7kzNfhC7L+RO5s69FesqdGTm/Gl/KslfjERkBj9XXdj2qQ6VESzPVg==","signatures":[{"sig":"MEYCIQDnVaVBDrJLU0r8cZ3bJi4a32hRqZg14MitWlbILLPsbwIhAPhHo4Z1GSfqUhN7vEgvw9ZMIPwbeAxg8IWJG09BjJEl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@drmoyassine%2fliteparse@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2912865},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./stt/server":{"types":"./dist/stt/server.d.ts","import":"./dist/stt/server.js","require":"./dist/stt/server.cjs"},"./vlm/server":{"types":"./dist/vlm/server.d.ts","import":"./dist/vlm/server.js","require":"./dist/vlm/server.cjs"},"./stt/worklet":{"types":"./dist/stt/worklet.d.ts","import":"./dist/stt/worklet.js","require":"./dist/stt/worklet.cjs"},"./raster/sharp":{"types":"./dist/raster/sharp.d.ts","import":"./dist/raster/sharp.js","require":"./dist/raster/sharp.cjs"},"./stt/dictation":{"types":"./dist/stt/dictation.d.ts","import":"./dist/stt/dictation.js","require":"./dist/stt/dictation.cjs"},"./engines/rapidocr":{"types":"./dist/engines/rapidocr.d.ts","import":"./dist/engines/rapidocr.js","require":"./dist/engines/rapidocr.cjs"},"./engines/moonshine":{"types":"./dist/engines/moonshine.d.ts","import":"./dist/engines/moonshine.js","require":"./dist/engines/moonshine.cjs"},"./ocr/rapidocr-server":{"types":"./dist/ocr/rapidocr-server.d.ts","import":"./dist/ocr/rapidocr-server.js","require":"./dist/ocr/rapidocr-server.cjs"},"./stt/dictation-worker":{"types":"./dist/stt/dictation-worker.d.ts","import":"./dist/stt/dictation-worker.js","require":"./dist/stt/dictation-worker.cjs"},"./stt/moonshine-server":{"types":"./dist/stt/moonshine-server.d.ts","import":"./dist/stt/moonshine-server.js","require":"./dist/stt/moonshine-server.cjs"}},"gitHead":"9b98f61ca85f3fa228d96c843421da45a61c4494","scripts":{"test":"vitest run","build":"tsup","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node scripts/copy-ort-wasm.mjs && node scripts/copy-pdfjs-worker.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:04473087-dff3-4ab3-93bb-303b98d7c0d4"}},"repository":{"url":"git+https://github.com/drmoyassine/liteparse.git","type":"git"},"_npmVersion":"11.19.1","description":"Isomorphic document text extraction (PDF, Office, images) with swappable raster/OCR/VLM adapters. Runs in the browser, Node, and Deno/edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"xlsx":"https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz","mammoth":"^1.12.0","dommatrix":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jszip":"^3.10.1","sharp":"^0.34.5","canvas":"^3.2.3","vitest":"^2.1.4","prettier":"^3.3.3","pdfjs-dist":"^4.8.0","typescript":"^5.6.3","@types/node":"^22.7.0","fake-indexeddb":"^6.0.0","@napi-rs/canvas":"^0.1.100","onnxruntime-web":"^1.27.0","onnxruntime-node":"^1.27.0"},"peerDependencies":{"pdfjs-dist":">=4","onnxruntime-web":">=1.20","onnxruntime-node":">=1.20"},"peerDependenciesMeta":{"pdfjs-dist":{"optional":true},"onnxruntime-web":{"optional":true},"onnxruntime-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/liteparse_0.4.1_1788291379797_0.24399878271302988","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@drmoyassine/liteparse","version":"0.4.2","keywords":["document","extraction","pdf","docx","xlsx","ocr","vision","vlm","isomorphic","pdfjs"],"author":{"name":"drmoyassine"},"license":"MIT","_id":"@drmoyassine/liteparse@0.4.2","maintainers":[{"name":"drmoyassine","email":"drmoyassine@gmail.com"}],"homepage":"https://github.com/drmoyassine/liteparse#readme","bugs":{"url":"https://github.com/drmoyassine/@drmoyassine/liteparse/issues"},"dist":{"shasum":"dd1ee97c912a84a20605846c5dcea41b6e5b077e","tarball":"https://registry.npmjs.org/@drmoyassine/liteparse/-/liteparse-0.4.2.tgz","fileCount":85,"integrity":"sha512-6bgoFM2sZvaJkDztSkOncZG7Qid6O8yJI+xfe/bvrQmfZUSgrFARdWEGbycFGMTinBIkVQ1VMlkJzusHWImNMw==","signatures":[{"sig":"MEUCIAedd/nXSuxyYJU8KI/BJDYpAxkEnk0WThqSfx5GNL8TAiEAoVkLB3GwyduIfZLZq19aKQIxyQBqz4Tjs/T6cPXSjBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@drmoyassine%2fliteparse@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2919387},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./stt/server":{"types":"./dist/stt/server.d.ts","import":"./dist/stt/server.js","require":"./dist/stt/server.cjs"},"./vlm/server":{"types":"./dist/vlm/server.d.ts","import":"./dist/vlm/server.js","require":"./dist/vlm/server.cjs"},"./stt/worklet":{"types":"./dist/stt/worklet.d.ts","import":"./dist/stt/worklet.js","require":"./dist/stt/worklet.cjs"},"./raster/sharp":{"types":"./dist/raster/sharp.d.ts","import":"./dist/raster/sharp.js","require":"./dist/raster/sharp.cjs"},"./stt/dictation":{"types":"./dist/stt/dictation.d.ts","import":"./dist/stt/dictation.js","require":"./dist/stt/dictation.cjs"},"./engines/rapidocr":{"types":"./dist/engines/rapidocr.d.ts","import":"./dist/engines/rapidocr.js","require":"./dist/engines/rapidocr.cjs"},"./engines/moonshine":{"types":"./dist/engines/moonshine.d.ts","import":"./dist/engines/moonshine.js","require":"./dist/engines/moonshine.cjs"},"./ocr/rapidocr-server":{"types":"./dist/ocr/rapidocr-server.d.ts","import":"./dist/ocr/rapidocr-server.js","require":"./dist/ocr/rapidocr-server.cjs"},"./stt/dictation-worker":{"types":"./dist/stt/dictation-worker.d.ts","import":"./dist/stt/dictation-worker.js","require":"./dist/stt/dictation-worker.cjs"},"./stt/moonshine-server":{"types":"./dist/stt/moonshine-server.d.ts","import":"./dist/stt/moonshine-server.js","require":"./dist/stt/moonshine-server.cjs"}},"gitHead":"38dc2a9979c85584930bb07da9fab7adc54ee70a","scripts":{"test":"vitest run","build":"tsup","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node scripts/copy-ort-wasm.mjs && node scripts/copy-pdfjs-worker.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:04473087-dff3-4ab3-93bb-303b98d7c0d4"}},"repository":{"url":"git+https://github.com/drmoyassine/liteparse.git","type":"git"},"_npmVersion":"11.19.1","description":"Isomorphic document text extraction (PDF, Office, images) with swappable raster/OCR/VLM adapters. Runs in the browser, Node, and Deno/edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"xlsx":"https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz","mammoth":"^1.12.0","dommatrix":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jszip":"^3.10.1","sharp":"^0.34.5","canvas":"^3.2.3","vitest":"^2.1.4","prettier":"^3.3.3","pdfjs-dist":"^4.8.0","typescript":"^5.6.3","@types/node":"^22.7.0","fake-indexeddb":"^6.0.0","@napi-rs/canvas":"^0.1.100","onnxruntime-web":"^1.27.0","onnxruntime-node":"^1.27.0"},"peerDependencies":{"pdfjs-dist":">=4","onnxruntime-web":">=1.20","onnxruntime-node":">=1.20"},"peerDependenciesMeta":{"pdfjs-dist":{"optional":true},"onnxruntime-web":{"optional":true},"onnxruntime-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/liteparse_0.4.2_1788298921508_0.40850819564159546","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@drmoyassine/liteparse","version":"0.4.3","keywords":["document","extraction","pdf","docx","xlsx","ocr","vision","vlm","isomorphic","pdfjs"],"author":{"name":"drmoyassine"},"license":"MIT","_id":"@drmoyassine/liteparse@0.4.3","maintainers":[{"name":"drmoyassine","email":"drmoyassine@gmail.com"}],"homepage":"https://github.com/drmoyassine/liteparse#readme","bugs":{"url":"https://github.com/drmoyassine/@drmoyassine/liteparse/issues"},"dist":{"shasum":"49cb3fa5d8a58a18de5266bd5fd2b64e2df87e45","tarball":"https://registry.npmjs.org/@drmoyassine/liteparse/-/liteparse-0.4.3.tgz","fileCount":85,"integrity":"sha512-c0uYz8L7JQcFEFpYYHv0i+WXp6gyuQCGAlfPu7GmOQ6vJInhw8GFp/bwWRvsdpDhFOYUsxkMDfOtkny9ZCYzaw==","signatures":[{"sig":"MEUCIQCsYsRRZZDfTlISa2jMCe9jYUNEJZLEiDHPVNvru6vO4QIgebwPm0MBOYXOngR7zqoJUakDBTckXPPyPbsYoB/OxBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@drmoyassine%2fliteparse@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3013551},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./stt/server":{"types":"./dist/stt/server.d.ts","import":"./dist/stt/server.js","require":"./dist/stt/server.cjs"},"./vlm/server":{"types":"./dist/vlm/server.d.ts","import":"./dist/vlm/server.js","require":"./dist/vlm/server.cjs"},"./stt/worklet":{"types":"./dist/stt/worklet.d.ts","import":"./dist/stt/worklet.js","require":"./dist/stt/worklet.cjs"},"./raster/sharp":{"types":"./dist/raster/sharp.d.ts","import":"./dist/raster/sharp.js","require":"./dist/raster/sharp.cjs"},"./stt/dictation":{"types":"./dist/stt/dictation.d.ts","import":"./dist/stt/dictation.js","require":"./dist/stt/dictation.cjs"},"./engines/rapidocr":{"types":"./dist/engines/rapidocr.d.ts","import":"./dist/engines/rapidocr.js","require":"./dist/engines/rapidocr.cjs"},"./engines/moonshine":{"types":"./dist/engines/moonshine.d.ts","import":"./dist/engines/moonshine.js","require":"./dist/engines/moonshine.cjs"},"./ocr/rapidocr-server":{"types":"./dist/ocr/rapidocr-server.d.ts","import":"./dist/ocr/rapidocr-server.js","require":"./dist/ocr/rapidocr-server.cjs"},"./stt/dictation-worker":{"types":"./dist/stt/dictation-worker.d.ts","import":"./dist/stt/dictation-worker.js","require":"./dist/stt/dictation-worker.cjs"},"./stt/moonshine-server":{"types":"./dist/stt/moonshine-server.d.ts","import":"./dist/stt/moonshine-server.js","require":"./dist/stt/moonshine-server.cjs"}},"gitHead":"fe52caf761e0ab9cece3684c1789aeb604ce5bed","scripts":{"test":"vitest run","build":"tsup","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node scripts/copy-ort-wasm.mjs && node scripts/copy-pdfjs-worker.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:04473087-dff3-4ab3-93bb-303b98d7c0d4"}},"repository":{"url":"git+https://github.com/drmoyassine/liteparse.git","type":"git"},"_npmVersion":"11.19.1","description":"Isomorphic document text extraction (PDF, Office, images) with swappable raster/OCR/VLM adapters. Runs in the browser, Node, and Deno/edge.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"xlsx":"https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz","mammoth":"^1.12.0","dommatrix":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jszip":"^3.10.1","sharp":"^0.34.5","canvas":"^3.2.3","vitest":"^2.1.4","prettier":"^3.3.3","pdfjs-dist":"^4.8.0","typescript":"^5.6.3","@types/node":"^22.7.0","fake-indexeddb":"^6.0.0","@napi-rs/canvas":"^0.1.100","onnxruntime-web":"^1.27.0","onnxruntime-node":"^1.27.0"},"peerDependencies":{"pdfjs-dist":">=4","onnxruntime-web":">=1.20","onnxruntime-node":">=1.20"},"peerDependenciesMeta":{"pdfjs-dist":{"optional":true},"onnxruntime-web":{"optional":true},"onnxruntime-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/liteparse_0.4.3_1788382270209_0.3443867383525274","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@drmoyassine/liteparse","version":"0.4.4","keywords":["document","extraction","pdf","docx","xlsx","ocr","vision","vlm","isomorphic","pdfjs"],"author":{"name":"drmoyassine"},"license":"MIT","_id":"@drmoyassine/liteparse@0.4.4","maintainers":[{"name":"drmoyassine","email":"drmoyassine@gmail.com"}],"homepage":"https://github.com/drmoyassine/liteparse#readme","bugs":{"url":"https://github.com/drmoyassine/@drmoyassine/liteparse/issues"},"dist":{"shasum":"acc9eb08dfd6916f29c00cfba6463d07270ef5a5","tarball":"https://registry.npmjs.org/@drmoyassine/liteparse/-/liteparse-0.4.4.tgz","fileCount":85,"integrity":"sha512-Dl1dSHwxtEWopi8KzYfQj2h3Ufnp/0hmrwc9DKSAgy7KFXth3cLQ6unamJfI+/gM2yrMWgYUvTFZKahpZARErg==","signatures":[{"sig":"MEQCIGA19yjdCG2OuA1UscS33Rm9/XptYTZoMm7aHXPK+gKtAiBAQ1JuCs2dkdbMEN0olsyc3FSthvkxi8Ah0twQKTIz5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@drmoyassine%2fliteparse@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3009692},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./stt/server":{"types":"./dist/stt/server.d.ts","import":"./dist/stt/server.js","require":"./dist/stt/server.cjs"},"./vlm/server":{"types":"./dist/vlm/server.d.ts","import":"./dist/vlm/server.js","require":"./dist/vlm/server.cjs"},"./stt/worklet":{"types":"./dist/stt/worklet.d.ts","import":"./dist/stt/worklet.js","require":"./dist/stt/worklet.cjs"},"./raster/sharp":{"types":"./dist/raster/sharp.d.ts","import":"./dist/raster/sharp.js","require":"./dist/raster/sharp.cjs"},"./stt/dictation":{"types":"./dist/stt/dictation.d.ts","import":"./dist/stt/dictation.js","require":"./dist/stt/dictation.cjs"},"./engines/rapidocr":{"types":"./dist/engines/rapidocr.d.ts","import":"./dist/engines/rapidocr.js","require":"./dist/engines/rapidocr.cjs"},"./engines/moonshine":{"types":"./dist/engines/moonshine.d.ts","import":"./dist/engines/moonshine.js","require":"./dist/engines/moonshine.cjs"},"./ocr/rapidocr-server":{"types":"./dist/ocr/rapidocr-server.d.ts","import":"./dist/ocr/rapidocr-server.js","require":"./dist/ocr/rapidocr-server.cjs"},"./stt/dictation-worker":{"types":"./dist/stt/dictation-worker.d.ts","import":"./dist/stt/dictation-worker.js","require":"./dist/stt/dictation-worker.cjs"},"./stt/moonshine-server":{"types":"./dist/stt/moonshine-server.d.ts","import":"./dist/stt/moonshine-server.js","require":"./dist/stt/moonshine-server.cjs"}},"gitHead":"9d09cf9a51778be3796a503fb4ff572e3b5c3c94","scripts":{"test":"vitest run","build":"tsup","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node scripts/copy-ort-wasm.mjs && node scripts/copy-pdfjs-worker.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:04473087-dff3-4ab3-93bb-303b98d7c0d4"}},"repository":{"url":"git+https://github.com/drmoyassine/liteparse.git","type":"git"},"_npmVersion":"11.19.1","description":"Isomorphic document text extraction (PDF, Office, images) with swappable raster/OCR/VLM adapters. Runs in the browser, Node, and Deno/edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"xlsx":"https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz","mammoth":"^1.12.0","dommatrix":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jszip":"^3.10.1","sharp":"^0.34.5","canvas":"^3.2.3","vitest":"^2.1.4","prettier":"^3.3.3","pdfjs-dist":"^4.8.0","typescript":"^5.6.3","@types/node":"^22.7.0","fake-indexeddb":"^6.0.0","@napi-rs/canvas":"^0.1.100","onnxruntime-web":"^1.27.0","onnxruntime-node":"^1.27.0"},"peerDependencies":{"pdfjs-dist":">=4","onnxruntime-web":">=1.20","onnxruntime-node":">=1.20"},"peerDependenciesMeta":{"pdfjs-dist":{"optional":true},"onnxruntime-web":{"optional":true},"onnxruntime-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/liteparse_0.4.4_1788386287249_0.9049850240227393","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@drmoyassine/liteparse","version":"0.5.0","description":"Isomorphic document text extraction (PDF, Office, images) with swappable raster/OCR/VLM adapters. Runs in the browser, Node, and Deno/edge.","type":"module","license":"MIT","author":{"name":"drmoyassine"},"repository":{"type":"git","url":"git+https://github.com/drmoyassine/liteparse.git"},"homepage":"https://github.com/drmoyassine/liteparse#readme","bugs":{"url":"https://github.com/drmoyassine/@drmoyassine/liteparse/issues"},"keywords":["document","extraction","pdf","docx","xlsx","ocr","vision","vlm","isomorphic","pdfjs"],"exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./raster/sharp":{"types":"./dist/raster/sharp.d.ts","import":"./dist/raster/sharp.js","require":"./dist/raster/sharp.cjs"},"./ocr/rapidocr-server":{"types":"./dist/ocr/rapidocr-server.d.ts","import":"./dist/ocr/rapidocr-server.js","require":"./dist/ocr/rapidocr-server.cjs"},"./vlm/server":{"types":"./dist/vlm/server.d.ts","import":"./dist/vlm/server.js","require":"./dist/vlm/server.cjs"},"./stt/server":{"types":"./dist/stt/server.d.ts","import":"./dist/stt/server.js","require":"./dist/stt/server.cjs"},"./stt/moonshine-server":{"types":"./dist/stt/moonshine-server.d.ts","import":"./dist/stt/moonshine-server.js","require":"./dist/stt/moonshine-server.cjs"},"./stt/worklet":{"types":"./dist/stt/worklet.d.ts","import":"./dist/stt/worklet.js","require":"./dist/stt/worklet.cjs"},"./stt/dictation-worker":{"types":"./dist/stt/dictation-worker.d.ts","import":"./dist/stt/dictation-worker.js","require":"./dist/stt/dictation-worker.cjs"},"./stt/dictation":{"types":"./dist/stt/dictation.d.ts","import":"./dist/stt/dictation.js","require":"./dist/stt/dictation.cjs"},"./engines/rapidocr":{"types":"./dist/engines/rapidocr.d.ts","import":"./dist/engines/rapidocr.js","require":"./dist/engines/rapidocr.cjs"},"./engines/moonshine":{"types":"./dist/engines/moonshine.d.ts","import":"./dist/engines/moonshine.js","require":"./dist/engines/moonshine.cjs"}},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"build":"tsup","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","format":"prettier --write .","prepublishOnly":"npm run build","postinstall":"node scripts/copy-ort-wasm.mjs && node scripts/copy-pdfjs-worker.mjs"},"dependencies":{"dommatrix":"^1.0.3","mammoth":"^1.12.0","xlsx":"https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"},"peerDependencies":{"onnxruntime-node":">=1.20","onnxruntime-web":">=1.20","pdfjs-dist":">=4"},"peerDependenciesMeta":{"pdfjs-dist":{"optional":true},"onnxruntime-node":{"optional":true},"onnxruntime-web":{"optional":true}},"devDependencies":{"@napi-rs/canvas":"^0.1.100","@types/node":"^22.7.0","canvas":"^3.2.3","fake-indexeddb":"^6.0.0","jszip":"^3.10.1","onnxruntime-node":"^1.27.0","onnxruntime-web":"^1.27.0","pdfjs-dist":"^4.8.0","prettier":"^3.3.3","sharp":"^0.34.5","tsup":"^8.3.0","typescript":"^5.6.3","vitest":"^2.1.4"},"gitHead":"583c07250e485e11e4aeffbf8f8f504687c20413","_id":"@drmoyassine/liteparse@0.5.0","_nodeVersion":"24.19.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-xnyK7p89O9lvjvsZwSqLMIl+01MmLcSfZFDgZkncA50yuUnC6jT01fn3v4ep38ZiNJRkUbpomshs/AmbE40E5w==","shasum":"5925e7a6b7afde14c9f8e8e9b110022c478832ae","tarball":"https://registry.npmjs.org/@drmoyassine/liteparse/-/liteparse-0.5.0.tgz","fileCount":85,"unpackedSize":2993591,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@drmoyassine%2fliteparse@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB70k1TAMqeJ4CTIKMKerZkwPDcFcPBs1HIU/EVBCisUAiEAgcfrhtoeFZqM9e2AJQ4Luf15p7lS7UiDGgTcKvY5qPc="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:04473087-dff3-4ab3-93bb-303b98d7c0d4"}},"directories":{},"maintainers":[{"name":"drmoyassine","email":"drmoyassine@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/liteparse_0.5.0_1788388422320_0.8215268982879729"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-01T10:11:40.195Z","modified":"2026-09-02T22:33:42.870Z","0.4.0":"2026-09-01T10:11:40.693Z","0.4.1":"2026-09-01T19:36:20.001Z","0.4.2":"2026-09-01T21:42:01.758Z","0.4.3":"2026-09-02T20:51:10.369Z","0.4.4":"2026-09-02T21:58:07.417Z","0.5.0":"2026-09-02T22:33:42.533Z"},"bugs":{"url":"https://github.com/drmoyassine/@drmoyassine/liteparse/issues"},"author":{"name":"drmoyassine"},"license":"MIT","homepage":"https://github.com/drmoyassine/liteparse#readme","keywords":["document","extraction","pdf","docx","xlsx","ocr","vision","vlm","isomorphic","pdfjs"],"repository":{"type":"git","url":"git+https://github.com/drmoyassine/liteparse.git"},"description":"Isomorphic document text extraction (PDF, Office, images) with swappable raster/OCR/VLM adapters. Runs in the browser, Node, and Deno/edge.","maintainers":[{"name":"drmoyassine","email":"drmoyassine@gmail.com"}],"readme":"# liteparse\n\nIsomorphic document text extraction — one entry point, runs unchanged in the **browser**, **Node**, and **Deno/edge**.\n\nExtracts text from PDFs (native + OCR + VLM fallback), Office files (`.docx`/`.xlsx`/`.csv`), and images, behind a single `parseDocument()` call. Platform-specific work (image rasterising, OCR, vision-LLM fallback) is done through **swappable adapters** that are auto-detected per runtime, so the same code parses a digital PDF in Node and a scanned passport in the browser.\n\n> **Status:** `0.5.0` removes the Arabic batch model (`moonshine-batch-tiny-ar`) from the model set — never loaded by any automatic path since AR went streaming everywhere, license \"other\" where every remaining id is MIT, and 31 MB of dead weight in the runner image; explicit `model:` ids for it now fall back to the streaming default; `0.4.4` flips the BROWSER Arabic default to streaming too — the official artifacts now load from a byte-identical Hugging Face mirror (the official CDN blocks browser fetches), and single-threaded WASM decodes them at RTF ≈ 0.19, same as native; `0.4.3` swaps the runner's Arabic slot-1 STT model to the official Moonshine streaming artifacts — 27 s clips decode cleanly (RTF ≈ 0.2) where every HF-checkpoint export looped past ~2 s; `0.4.2` fixes a dictation listener leak (a shared worker delivered each session's text to every past client); `0.4.1` fixes the batch-decoder cross-KV threading (Arabic hallucination loops, base-en deaf decode); `0.4.0` ships the linear OCR cascade (pdfjs native text → RapidOCR → VLM fallback) plus the full speech track — audio as a first-class `parseDocument()` kind, local Moonshine STT (EN/AR, browser + self-hosted runner), and live dictation. See [ARCHITECTURE.md](./ARCHITECTURE.md) and [ROADMAP.md](./ROADMAP.md).\n\n## Install\n\n```bash\nnpm install @drmoyassine/liteparse\n# PDF support (optional peer — only if you parse PDFs):\nnpm install pdfjs-dist\n```\n\nHeavy adapters are opt-in (imported only when you use them):\n```bash\n# Node PDF raster preprocessing — needs both (sharp preprocesses/encodes,\n# @napi-rs/canvas is the surface pdfjs renders into):\nnpm install sharp @napi-rs/canvas\n# Node OCR (RapidOCR via onnxruntime-node):\nnpm install onnxruntime-node\n# Browser private OCR (RapidOCR via onnxruntime-web):\nnpm install onnxruntime-web\n```\n\n### Node: local rasterisation + OCR fallback (no VLM round-trip for rendering)\n\n```ts\nimport { parseDocument } from \"@drmoyassine/liteparse\";\nimport { createSharpRaster } from \"@drmoyassine/liteparse/raster/sharp\";\nimport { createRapidOcrServerEngine } from \"@drmoyassine/liteparse/ocr/rapidocr-server\";\n\nconst raster = await createSharpRaster();          // dynamically imports sharp + @napi-rs/canvas\nconst ocrEngine = await createRapidOcrServerEngine(); // loads ONNX models (warm singleton)\nconst { text } = await parseDocument(pdfFile, { raster, ocrEngine, vlm });\n// scanned pages are rasterised locally, OCR'd, then VLM'd as fallback\n```\n\n### Low-level: the OCR cascade\n\nFor server/edge pipelines that want explicit control over the fallback order, `parseWithFallbacks` runs an ordered list of slots and keeps the first one that yields text:\n\n```ts\nimport { parseWithFallbacks } from \"@drmoyassine/liteparse\";\n// slots: whole-doc OCR (e.g. ocr.space) → per-page raster+OCR → VLM\n```\n\n## Usage\n\n```ts\nimport { parseDocument } from \"@drmoyassine/liteparse\";\n\nconst result = await parseDocument(file, { filename: \"transcript.pdf\", maxPages: 20 });\nconsole.log(result.text);\n// result.source -> \"native\" | \"ocr\" | \"vlm\" | \"mixed\"\n// result.pages  -> per-page text + source\n// result.warnings\n```\n\n`parseDocument` **never throws for content problems** — an unparseable file returns `{ text: \"\", warnings: [...] }`. It throws only on programmer error or abort.\n\n### Injecting a VLM fallback (scanned docs / images)\n\nThe vision-LLM gateway is injected, so the library ships zero provider coupling. In the browser, point at your own backend; on the server, use your AI gateway directly:\n\n```ts\nimport { parseDocument, type VlmGateway } from \"@drmoyassine/liteparse\";\n\nconst vlm: VlmGateway = {\n  async readImage(png) {\n    const text = await fetch(\"/api/parse-document/vlm\", {\n      method: \"POST\",\n      body: png,                       // POST the PNG bytes\n    }).then((r) => r.text());\n    return text;\n  },\n};\n\nconst { text } = await parseDocument(imageFile, { vlm });\n```\n\nSee `src/examples/` for a browser gateway and a server gateway (OpenAI-compatible `image_url` block).\n\n## Adapters\n\n| Interface | Browser | Node | Deno/edge |\n| --- | --- | --- | --- |\n| `RasterAdapter` | Canvas (`OffscreenCanvas`/`<canvas>`) | Sharp (`@drmoyassine/liteparse/raster/sharp`) | none → VLM |\n| `OcrEngine` | RapidOCR (runner-injected) or VLM | RapidOCR (`@drmoyassine/liteparse/ocr/rapidocr-server`) or VLM | VLM |\n| `VlmGateway` | injected (→ your backend) | injected (→ your AI gateway) | injected |\n\n`ocr: \"auto\"` (default) uses a registered local OCR engine (browser) when present, else falls back to the VLM gateway when one is supplied, else `none`. Any engine returning empty/error for a page falls through to the VLM gateway when configured.\n\n### Browser: private OCR (RapidOCR / PaddleOCR, no server round-trip)\n\nThere is no official RapidOCR npm package, so liteparse wraps a community browser\nOCR package (e.g. `client-side-ocr`, `@paddleocr/paddleocr-js` — both run\nRapidOCR/PaddleOCR models on `onnxruntime-web`) through an injected runner. Register\nit once at app start and `parseDocument` uses it automatically:\n\n```bash\nnpm install client-side-ocr onnxruntime-web\n```\n\n```ts\nimport { createOCR } from \"client-side-ocr\";\nimport { createRapidOcrEngine, setBrowserOcrEngine } from \"@drmoyassine/liteparse\";\n\nconst ocr = await createOCR(); // downloads ONNX models on first use\nsetBrowserOcrEngine(\n  createRapidOcrEngine({\n    runner: {\n      async recognize(image) {\n        const bitmap = await createImageBitmap(new Blob([image], { type: \"image/png\" }));\n        const { text } = await ocr.recognize(bitmap); // adapt to your package's API\n        return { text };\n      },\n    },\n  }),\n);\n```\n\nSee `src/examples/rapidocr-runner.browser.ts` for a reusable runner adapter.\n\n## Speech (STT) — Moonshine, EN + AR\n\n`parseDocument()` accepts audio as a first-class kind. Register a local engine\nand/or an external gateway; local runs first and escalates on low confidence\n(floor 0.55) or failure:\n\n```ts\nimport {\n  parseDocument,\n  setBrowserSttEngine,\n  createMoonshineSttEngine,\n  createMoonshineModelOrigin,\n  createServerSttGateway,\n} from \"@drmoyassine/liteparse\";\n\nsetBrowserSttEngine(\n  createMoonshineSttEngine({ modelOrigin: createMoonshineModelOrigin() }),\n); // EN + AR streaming-tiny, ~144 MB, cached in IndexedDB\n\nconst stt = createServerSttGateway({\n  endpoint: \"https://api.openai.com/v1/audio/transcriptions\",\n  apiKey: process.env.OPENAI_API_KEY,\n  model: \"gpt-4o-transcribe\",\n}); // optional escalation — resolves { text: \"\" }, never throws\n\nconst { text } = await parseDocument(file, { stt, filename: \"note.wav\" });\n```\n\nServer-side instead: self-host the [parse runner](./apps/runner) and call\n`POST /transcribe` — same escalation walk, native speed.\n\n**Self-hosted assets (browser, same-origin):** copy `onnxruntime-web`'s wasm\nfiles to `/ort/` and the Moonshine tokenizer + streaming-config sidecars to\n`/models/moonshine/` (the `.ort` weights download from Hugging Face — AR\nstreaming via a byte-identical mirror of the official artifacts — and cache).\nNo COOP/COEP headers required — single-threaded WASM is the no-headers path.\n\n**Live dictation** — a separate lightweight client, not the parse worker.\nHost the two bundles as static assets and inject the worker (long-lived —\ndon't spawn it per session):\n\n```ts\nimport { createDictation } from \"@drmoyassine/liteparse\";\n\nconst dictation = createDictation({\n  worker: new Worker(\"<assets>/dictation-worker.js\", { type: \"module\" }), // @drmoyassine/liteparse/stt/dictation-worker\n  workletUrl: \"<assets>/worklet.js\", // @drmoyassine/liteparse/stt/worklet\n  language: \"ar\", // or \"en\"\n  onInterim: (i) => preview(i.text), // ~first at 900 ms, then ≥1.2 s apart\n  onFinal: (f) => insert(f.text), // after a ~480 ms pause; \"\" = gate dropped it\n});\nawait dictation.start({ deviceId }); // or a MediaStream you own\nawait dictation.stop();\n```\n\nArabic diacritics are stripped by default (`keepDiacritics: true` to keep).\nModel variants, latency budget, and the D1/D2 streaming split: [ROADMAP.md](./ROADMAP.md) Track 3.\n\n## Roadmap — Intelligent Document Router (`0.3.0+`)\n\nToday every document runs the same fixed cascade. The router **classifies once** (type, page count, scanned/digital, script/language) **then routes once** to the optimal strategy, replacing brute-force timeout fallback. Highlights:\n\n- **Web Worker** owns the browser OCR pipeline (ONNX + `OffscreenCanvas`, never blocks the UI)\n- **Tiered model downloads**: detection + Latin recognition (~16MB) for all devices; Granite-Docling-258M (~130–258MB) for WebGPU devices only\n- **Latin + 1 dynamic language** in the browser; all other languages permanently on the edge\n- **Granite-Docling-258M** as a local structure-aware VLM between RapidOCR and the hosted VLM, shrinking hosted-VLM usage to <5%\n- **ocr.space removed**; RapidOCR replaces it everywhere\n\n➡️ Full design: [ARCHITECTURE.md](./ARCHITECTURE.md) · Build plan (parallelized for multi-agent execution): [ROADMAP.md](./ROADMAP.md)\n\n## Limits\n\n20 MB input · 20 OCR pages · 50k output chars · 30 s per-page abort. VLM fallback is called at most `maxPages` times and reports `warnings: [\"vlm_fallback_used:<n> pages\"]`.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}