-
🎙️ Multi-Input Translation
- Text input with auto-translation
- Voice input with speech recognition
- Image translation with OCR support
- Camera capture for instant translation
-
🤖 AI-Powered
- Supports multiple AI providers (OpenAI, custom endpoints)
- Advanced VLM (Vision-Language Model) for image translation
- High-quality OCR with coordinate-based text overlay
- Smart caching for faster repeat translations
-
🌍 Multilingual Support
- Chinese, Japanese, English, Korean, French, Spanish, and more
- Auto-detection of source language
- Furigana support for Japanese text
- Text-to-speech for translation results
-
📱 Progressive Web App
- Installable on mobile and desktop
- Offline-capable with service worker
- Optimized PWA assets
- Node.js 18+
- pnpm (managed via corepack)
# Enable corepack (if not already enabled)
corepack enable
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Build for production
pnpm build
# Preview production build
pnpm previewCreate a .env file or configure settings in the app:
-
General AI Settings
- API Key
- Endpoint URL
- Model Name
-
Image OCR Settings
- Provider (Qwen VL or custom)
- API Key and Endpoint
- Model Name
-
Audio Transcription (Optional)
- SiliconFlow API for enhanced speech recognition
- Select source and target languages
- Type or speak your text
- Get instant AI-powered translation
- Listen to pronunciation with TTS
- Switch to camera mode
- Upload an image or capture with camera
- Choose between:
- OCR Mode: Overlay translated text on image
- Text Only Mode: Extract and translate text using VLM
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- Styling: UnoCSS (Tailwind-compatible)
- UI Components: shadcn/ui
- AI SDK: Vercel AI SDK
- PWA: vite-plugin-pwa
- Icons: Lucide React
- Routing: React Router
- OCR/VLM: OpenAI-compatible APIs
tabitomo/
├── public/ # Static assets
│ ├── icons/ # App icons and PWA assets
│ └── kuromoji/ # Japanese text processing dictionary
├── src/
│ ├── components/ # React components
│ ├── utils/ # Utility functions
│ │ ├── translation.ts # Translation logic
│ │ ├── imageOcr.ts # OCR and VLM
│ │ ├── japanese.ts # Furigana generation
│ │ └── settings.ts # Settings management
│ ├── App.tsx # Main app component
│ └── index.tsx # Entry point
├── LICENSE # Apache 2.0 License
├── NOTICE # Proprietary assets notice
└── package.json # Dependencies
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
The "Buddy" mascot icon (public/icons/buddy.png, public/icon.png) is proprietary and all rights reserved. See NOTICE for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Buddy mascot design - © 2025 tabitomo
- Powered by Vercel AI SDK
- UI components from shadcn/ui
- Built with Vite and React
Made with ❤️ by Alkinum