個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證AI invoice & document extraction — batch upload, A/B cross-check, manual review, register reconciliation. EN/中文/BM. Mirror: https://lapis-bloom-hav8.here.now/
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗▶ Live demo: GitHub Pages · here.now mirror
In-browser document extraction: invoices, receipts, delivery orders, shipment lists and more. Images (incl. iPhone HEIC), PDF, Excel/CSV, Word and video → OpenAI-compatible or Anthropic models → arithmetic checks, A/B cross-verification, manual review, export. UI in English (default), 中文 and Bahasa Melayu.
| Path | What |
|---|---|
site/index.html | The app (libraries from jsDelivr with pinned versions) |
site/route.js | Delivery route planning (stops, geocoding, road matrix, optimiser) |
tests/ | Playwright end-to-end tests + synthetic fixtures (tests/fixtures/make_fixtures.py) |
proxy/ | Optional Cloudflare Worker CORS proxy |
python/invoicelens.py | Command-line / server version with the same prompt, checks, cross-check and reconciliation as the web app |
.github/workflows/ | tests.yml → on success pages.yml + herenow.yml deploy; proxy.yml deploys the worker |
npm ci
npx playwright install chromium # once
npm test
The tests serve site/index.html locally, map the jsDelivr libraries to node_modules (same pinned versions) and mock every model call, so they need no network or API keys. They cover: extraction and all result tabs, arithmetic checks, batch queue (concurrency, failure, retry, CSV), manual review (A/B pick, inline edit, undo, reviewed, export), autosave/restore, HEIC/Excel/Word/CSV, progress/cancel/timeout, i18n (no untranslated text in en/ms/zh), mobile overflow at 375px, and provider presets.
When you change a library version in site/index.html, change it in package.json too.
Same extraction rules as the web app, for batch or server use (any OpenAI-compatible endpoint or Anthropic):
pip install -r python/requirements.txt
export IL_A_KEY=sk-... # model A; optional model B via IL_B_KEY / --b-*
python python/invoicelens.py invoices/ register.pdf \
--a-base https://openrouter.ai/api/v1 --a-model google/gemini-2.5-flash --out out/
Writes results.json, summary.csv, tables.csv and reconcile.csv to --out. Run python python/invoicelens.py -h for all options (--tiles, --no-enhance, --pdf-image, --concurrency, --b-type anthropic, …). Text-based PDF pages are sent as their text layer by default (exact digits, fewer tokens); summary.csv includes token usage. Tests: pytest python/tests (a test fails if the prompt drifts from site/index.html).
Every push runs Tests. Only when they pass do GitHub Pages and here.now deploy that exact commit (here.now needs the HERENOW_API_KEY repository secret). Both deploy workflows can also be run manually.
Some OpenAI-compatible providers block calls from web pages. proxy/ is a Cloudflare Worker that only accepts requests from the two sites above and forwards them to the X-Target-Base URL without storing keys. Add CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID secrets, run “Deploy CORS proxy”, and paste the worker URL into Model settings → Advanced.
All interfaces used for stop locations (OpenStreetMap, Google Places, SerpApi, local helpers), their parameters, limits and first-use checklist: docs/location-apis.md.