TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
InstaScan AI: Scan, Extract, Translate. Instantly extract searchable text from images and PDFs, translate it and make information easier to find, right in your browser.
ProductivityJavaScript · CSSGitHub @bharathdrive-aiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Browser-based OCR for images and PDFs using Tesseract.js, no uploads
Taken from the repository README
Loading the full README.
Read the full README ↗Scan • Extract • Translate
Instantly extract searchable text from images and PDFs. Translate words and make information easier to find.
A browser-based OCR tool that extracts text from images and PDFs using Tesseract.js 7. Everything runs on the user's device. Files are never uploaded; only the OCR engine and language models are downloaded from a CDN (and cached after first use).
Live: www.instascan.in (Vercel; insta-scan.vercel.app and imagesearcheasy.vercel.app still work) · bharathdrive-ai.github.io/imageRecognition (GitHub Pages)
Architecture: see ARCHITECTURE.md.
/ to jump to search.It's a static site with no build step. Serve the folder with any static server (ES modules don't load from file://):
python -m http.server 8790
Then open http://localhost:8790.
A push to main deploys to both hosts automatically:
imagesearcheasy (team driveAI), connected through the Vercel GitHub app, preset "Other", no build command → https://www.instascan.in/ (custom domain; instascan.in redirects to www, and https://insta-scan.vercel.app/ also serves it)instascan.in, registered at GoDaddy. DNS: A @ 216.198.79.1 and CNAME www → <project>.vercel-dns-017.com, plus the Google Search Console TXT record.main / root → https://bharathdrive-ai.github.io/imageRecognition/Any other static host (Netlify, Cloudflare Pages) works the same way.
The Google Drive button opens Google's file picker. Picked images and PDFs download straight from the Drive API into the browser, and nothing goes through any other server. The app asks only for the drive.file scope, so it can read the files the user picks and nothing else in their Drive.
The button stays hidden until js/config.js has three values. To get them from Google Cloud Console:
Pick or create a project and note its project number (Dashboard). This is appId.
Enable APIs: APIs & Services → Library → enable Google Picker API and Google Drive API.
OAuth consent screen: User type External, add the app name and support email, and add the scope .../auth/drive.file. While the app is in Testing, only the listed test users can sign in. Click Publish app to open it to everyone; drive.file is a non-sensitive scope, so Google review isn't needed.
OAuth client ID: Credentials → Create credentials → OAuth client ID → Web application. Under Authorized JavaScript origins, add:
https://www.instascan.inhttps://insta-scan.vercel.apphttps://bharathdrive-ai.github.iohttp://localhost:8790Copy the client ID into clientId.
API key: Credentials → Create credentials → API key. Restrict it to the Google Picker API, and to websites https://www.instascan.in/*, https://insta-scan.vercel.app/*, https://bharathdrive-ai.github.io/* and http://localhost:8790/*. Copy it into apiKey.
These values are public by design: they identify the app to Google and are not secrets. The API key's restrictions are what stop it being used elsewhere. Never put a service-account key in this repo.
index.html UI layout
css/styles.css Styles, light/dark theme tokens, responsive layout
js/app.js State, file handling, rendering, overlay interaction, exports wiring
js/ocr.js Tesseract.js worker wrapper (lazy init, language switching, TSV parsing)
js/preprocess.js Canvas preprocessing (scale, grayscale, contrast, Otsu, invert, rotate)
js/pdf.js PDF → page canvases via pdf.js (loaded only when a PDF is added)
js/imagesearch.js Search by image: dHash duplicates, OpenCV.js feature + template matching (loaded on demand)
js/semantic.js Search by description: MobileCLIP-S0 embeddings via Transformers.js (loaded on demand)
js/translate.js Translation: on-device Translator API, MyMemory fallback with consent
js/drive.js Google Drive import: sign-in, Picker, downloads (Google scripts load on demand)
js/config.js Google Drive client ID, API key, project number (blank = Drive button hidden)
testImages/ Sample Telugu images for testing OCR and translation
js/export.js Download helpers (txt, json, combined)
0123456789.,) when reading numbers.