Skip to content

cloud7-dev/screenshot-to-spreadsheet

Screenshot-to-Spreadsheet

Screenshot-to-Spreadsheet is a local-first web app for turning screenshots, chat settlement messages, and transaction-table images into editable CSV/XLSX files without uploading your data to a server. Paste or drop an image, review OCR confidence cell by cell, fix uncertain values, and export a spreadsheet you can open in Excel, Google Sheets, or Numbers.

한국어 요약: Screenshot-to-Spreadsheet는 캡처 이미지, 카톡 정산 메시지, 거래표 이미지를 브라우저 안에서 OCR로 읽고 검수 가능한 표로 바꾼 뒤 CSV/XLSX로 내보내는 로컬 우선 웹앱입니다. 앱 서버로 이미지를 업로드하지 않는 것을 기본 원칙으로 삼고, 사용자는 낮은 신뢰도 셀과 민감해 보이는 숫자를 확인한 뒤 Excel, Google Sheets, Numbers에서 열 수 있는 파일로 저장할 수 있습니다.

Why this matters

Many useful spreadsheets are trapped inside screenshots: KakaoTalk settlement messages, bank or marketplace transaction lists, internal dashboards, and quick comparison tables. Uploading those images to a random converter is often unacceptable because they can contain names, account-like numbers, phone numbers, customer data, and private prices.

Screenshot-to-Spreadsheet focuses on the review workflow, not blind automation: extract locally, highlight uncertain cells, mask sensitive-looking values, let the user fix the grid, and export CSV/XLSX with a review log.

Desktop QA screenshot

Current MVP

  • Paste or drag-drop an image into the browser.
  • Run browser OCR with same-origin Tesseract.js worker/core/language assets.
  • Parse plain/OCR text in three modes: table screenshot, Kakao-style settlement, and transaction list.
  • Review extracted data in a unified review workspace with the grid, warnings, low-confidence navigation, and export actions in one place.
  • Highlight low-confidence and sensitive-looking cells.
  • Switch redaction presets between Basic, Finance, and Share sample display modes.
  • Apply browser-local crop/rotate/grayscale/contrast preprocessing before OCR.
  • Export CSV and XLSX, including a review_log sheet for XLSX.
  • Register a production service worker and web app manifest for an offline/PWA app shell.
  • Ship English/Korean OCR assets from the app origin instead of loading OCR code/data from a CDN at runtime.
  • Run 6 synthetic parser regression fixtures in CI.
  • Run a privacy check in CI to block upload/telemetry-style browser APIs from app code.
  • Capture runtime network proof during browser QA.
  • Use synthetic sample data only; no real chat, bank, or account screenshots are included.
  • Switch the app UI between Korean and English.

Privacy model

The app is designed around local-first processing. Images are kept in the current browser session and export files are generated locally. The MVP does not send image data to an application server.

The app serves Tesseract worker/core files and English/Korean language data from the same app origin. The image itself is not uploaded by this app.

Design notes

The MVP intentionally keeps the architecture small: one React screen, focused parser utilities, local OCR, local validation, and local CSV/XLSX export. The only unusually low-level part is XLSX generation. It writes a minimal OpenXML workbook and ZIP container directly so the project can avoid adding a vulnerable spreadsheet dependency while still supporting Excel-compatible export.

Korean mode is a UI language switch, not just an OCR setting. OCR language remains selectable separately because a Korean user may still need English-only screenshots or mixed Korean/English data.

Development

npm install
npm run dev

Build and smoke test:

npm run ocr:assets
npm run verify

Privacy-only check:

npm run privacy:check

Browser QA on macOS with Chrome installed:

npm run qa:browser

8-week roadmap

Week 1-2: OSS trust and product quality

  • Standard Apache-2.0 license recognition on GitHub.
  • Synthetic parser fixtures for table screenshots, Kakao-style settlement text, and transaction lists.
  • Parser regression tests in CI.
  • CSV/XLSX export smoke coverage and QA screenshots.
  • Clean issue templates, security policy, contribution guide, labels, roadmap issues, and a v0.2.0 release.

Week 3-4: OCR review workflow

  • Crop preview, rotate, grayscale, and contrast controls.
  • Unified review workspace for low-confidence navigation, validation warnings, grid editing, and export.
  • Validation presets for amount totals, missing dates, duplicate rows/amounts, and sensitive-looking numbers.
  • Redaction presets for safer sample sharing and issue reporting.
  • Clearer XLSX review_log output for correction and warning review.

Week 5-6: Offline/PWA and privacy proof

  • PWA install path and offline app shell.
  • OCR asset caching strategy for Korean/English language data.
  • Network/privacy proof documentation, static CI checks, and browser QA runtime network evidence.
  • Clear limits for browser-local OCR accuracy and speed.

Week 7-8: Extensibility and community contribution

  • Optional local worker backend design for img2table, PaddleOCR, and Surya.
  • Benchmark fixtures and expected outputs for parser contributions.
  • Parser contribution guide for Korean settlement and transaction data shapes.
  • v0.3.0 release and launch materials for Show HN, Disquiet, r/selfhosted, and r/opensource.

Research and QA

Contributing and security

Recommended GitHub topics

ocr, spreadsheet, csv, xlsx, table-extraction, screenshot, local-first, privacy-first, pwa, image-to-table, korean

License

Apache-2.0

About

Local-first OCR web app that turns screenshots, Kakao settlement messages, and transaction images into reviewed CSV/XLSX files.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors