Cursor rule
.cursor/rules/translation-workflow.mdcTranslation workflow and OCR processing pipeline
Cursor rules
Quality
66/100
Scores the file, not the repository.Length
1,010 words
45 headings · 6 code blocksRepository
103
— · pushed 17 days agoLast changed
3 days ago
First indexed 3 days ago.1234567# Translation Workflow and API Integration Guide89## Translation Pipeline Overview1011The translation process in UGTLive follows this pipeline:121. **Screen Capture** → 2. **OCR Processing** → 3. **Block Detection** → 4. **Translation** → 5. **Display**1314## Screen Capture1516### Monitor Window ([src/MonitorWindow.xaml.cs](mdc:src/MonitorWindow.xaml.cs))17- Captures screen region at configurable FPS18- Uses `System.Drawing` for bitmap operations19- Sends captured images to OCR services20- Provides visual feedback of capture area2122### Capture Methods23```csharp24// Main capture triggered by timer25private void Timer_Tick(object sender, EventArgs e)26// Captures bitmap from screen region27private Bitmap CaptureScreen(int x, int y, int width, int height)28```2930## OCR Processing3132### OCR Service Selection33UGTLive supports six OCR backends configured in [src/ConfigManager.cs](mdc:src/ConfigManager.cs):34351. **Windows OCR** ([src/WindowsOCRManager.cs](mdc:src/WindowsOCRManager.cs))36 - Uses Windows.Media.Ocr API37 - Faster but less accurate for some languages38 - No external dependencies39402. **EasyOCR** (via PythonServicesManager)41 - Python server running locally42 - Better accuracy for Asian languages43 - Requires conda environment setup44453. **MangaOCR** (via PythonServicesManager)46 - Specialized for vertical Japanese manga text47 - YOLO-based text detection48 - Configurable region size and overlap settings49504. **PaddleOCR** (via PythonServicesManager)51 - Multi-language OCR with 100+ language support52 - Optional angle classification for rotated text53 - GPU acceleration support54555. **docTR** (via PythonServicesManager)56 - Great for non-Asian languages57 - Document-oriented OCR58 - High accuracy for printed text59606. **Google Vision** ([src/GoogleVisionOCRService.cs](mdc:src/GoogleVisionOCRService.cs))61 - Cloud-based OCR service62 - Requires API key and costs money63 - High accuracy but not local6465### OCR Data Flow66```67Bitmap → OCR Service → List<TextObject> → UniversalBlockDetector68```6970### Python OCR Services71All Python OCR services are managed by `PythonServicesManager`:72- Services discovered automatically on startup73- Each service runs on its own port74- Services can be installed/uninstalled via UI75- Health checks and diagnostics available7677## Block Detection ([src/UniversalBlockDetector.cs](mdc:src/UniversalBlockDetector.cs))7879The UniversalBlockDetector groups individual characters/words/lines into meaningful text blocks:8081### Key Features82- **Universal Detection**: Handles mixed input types (Words, Lines, Characters)83- **Intelligent Grouping**: Groups based on proximity, alignment, and reading order84- **Configurable Thresholds**: Per-OCR method settings for glue distances85- **Height Similarity**: Prevents merging text with very different sizes86- **Large Gap Detection**: Splits text at large horizontal gaps8788### Key Parameters89- **Block Detection Scale**: Controls grouping aggressiveness (0.0 - 1.0)90- **Horizontal/Vertical Glue**: Per-OCR method glue distances91- **Height Similarity Threshold**: Percentage for height matching92- **Settle Time**: Time to wait before processing blocks9394### Grouping Algorithm951. Sorts text objects by position962. Groups based on proximity and alignment973. Merges overlapping blocks984. Filters by minimum size995. Handles mixed input types intelligently100101## Translation Services102103### Service Interface ([src/ITranslationService.cs](mdc:src/ITranslationService.cs))104```csharp105public interface ITranslationService106{107 Task<TranslationResult?> TranslateAsync(108 string sourceText,109 string targetLanguage,110 string context);111}112```113114### Available Services115116#### Gemini ([src/GeminiTranslationService.cs](mdc:src/GeminiTranslationService.cs))117- Endpoint: `https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent`118- Models: gemini-1.5-flash, gemini-1.5-pro, gemini-2.0-flash119- Supports custom prompts and context120121#### ChatGPT ([src/ChatGptTranslationService.cs](mdc:src/ChatGptTranslationService.cs))122- Endpoint: `https://api.openai.com/v1/chat/completions`123- Models: gpt-4o, gpt-4o-mini, o1-preview, o1-mini124- Supports streaming responses125- Configurable max completion tokens126127#### Ollama ([src/OllamaTranslationService.cs](mdc:src/OllamaTranslationService.cs))128- Local endpoint: `http://localhost:11434/api/generate`129- Models: Various local models (llama, gemma, etc.)130- Privacy-focused, no cloud dependency131- Configurable URL and port132133#### Google Translate ([src/GoogleTranslateService.cs](mdc:src/GoogleTranslateService.cs))134- Can use Cloud API or free web API135- Auto language mapping support136- Fast translation for simple use cases137138#### llama.cpp ([src/LlamaCppTranslationService.cs](mdc:src/LlamaCppTranslationService.cs))139- Local llama.cpp server endpoint140- Configurable URL and port141- Privacy-focused local translation142143### Translation Request Format144All services receive:145- Source text with position data146- Target language147- Previous context (configurable length)148- Game name for context149- Custom prompt template150151## Display Systems152153### ChatBox Window ([src/ChatBoxWindow.xaml.cs](mdc:src/ChatBoxWindow.xaml.cs))154- Overlay window for displaying translations155- Customizable appearance (color, transparency, font)156- Auto-scroll and history management157- Can be positioned anywhere on screen158159### Overlay System160- Text overlays positioned at original text locations161- Configurable clear delay162- Passthrough mode for interaction163- Multiple overlay modes164165### Text Rendering166- Uses WPF TextBlock with formatting167- Supports multiple fonts and sizes168- Color-coded by translation service169- Maintains translation history170171## API Key Management172173API keys are stored securely in [src/ConfigManager.cs](mdc:src/ConfigManager.cs):174- Stored in plain text config files (local only)175- Never logged (masked in console output)176- Validated on settings save177178## Context Management179180### Previous Context System181- Stores recent translations for context182- Configurable maximum context length183- Filters small UI elements (buttons, menus)184- Improves translation accuracy185186### Context Flow187```188Previous Translations → Context Buffer → Translation Request → LLM189```190191## Audio Features192193### Text-to-Speech Services194- **Google TTS** ([src/GoogleTTSService.cs](mdc:src/GoogleTTSService.cs))195- **ElevenLabs** ([src/ElevenLabsService.cs](mdc:src/ElevenLabsService.cs))196- Voice selection dialogs197- Audio preloading for source/target languages198199### Real-time Audio Transcription200- Uses OpenAI Realtime API ([src/OpenAIRealtimeAudioService.cs](mdc:src/OpenAIRealtimeAudioService.cs))201- WebSocket connection for streaming202- Supports voice activity detection203204### Audio Playback205- Managed by `AudioPlaybackManager`206- Preloading via `AudioPreloadService`207- Queue management and playback control208209## Error Handling210211### Common Error Points2121. **OCR Failures**: Logged, skips frame2132. **Translation API Errors**: Displays error in ChatBox or via ErrorPopupManager2143. **Network Issues**: Retries with exponential backoff2154. **Invalid API Keys**: Shows settings prompt216217### Logging218All errors logged via [src/LogManager.cs](mdc:src/LogManager.cs):219```csharp220LogManager.Instance.LogError("Error description", exception);221```222223### Error Popups224User-friendly error messages via [src/ErrorPopupManager.cs](mdc:src/ErrorPopupManager.cs):225```csharp226ErrorPopupManager.ShowError("Title", "Message");227```228229## Performance Considerations230231### OCR Optimization232- Configurable capture FPS233- Region-based capture (not full screen)234- Caching of unchanged regions235- Per-OCR method confidence thresholds236237### Translation Optimization238- Batches small text blocks239- Caches recent translations240- Parallel processing where possible241- Pause OCR while translating option242243### Memory Management244- Disposes bitmaps after use245- Limits translation history size246- Clears old context periodically247- Audio preloading with size limits248249## Testing Translation Services250251### Manual Testing2521. Set API key in settings2532. Select service and model2543. Use Monitor window to capture text2554. Check ChatBox for results2565. Review logs for errors257258### Common Issues259- **Empty translations**: Check OCR output260- **Wrong language**: Verify language settings261- **Slow performance**: Reduce capture area/FPS262- **API errors**: Validate API key and quota263- **Python service errors**: Check service diagnostics dialog264
Also in SethRobinson/UGTLive
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| SethRobinson/UGTLive.cursor/rules/ui-ux-patterns.mdc · 103 | Cursor rules | stylearchtypesui+1 | 62/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/architecture-patterns.mdc · 103 | Cursor rules | buildtestlint-formatstyle+6 | 77/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/async-threading-patterns.mdc · 103 | Cursor rules | styleuido-not | 65/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/code-style-conventions.mdc · 103 | Cursor rules | stylearchtypesdocs | 62/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/configuration-management.mdc · 103 | Cursor rules | archsecuritydatabaseapi+1 | 65/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/debugging-testing.mdc · 103 | Cursor rules | buildteststylearch+3 | 69/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/locale-invariant-formatting.mdc · 103 | Cursor rules | lint-formatuido-not | 61/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/service-integration-patterns.mdc · 103 | Cursor rules | buildteststylearch | 69/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/ugtlive-project-guide.mdc · 103 | Cursor rules | stylearchuideployment+1 | 69/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/versioning-workflow.mdc · 103 | Cursor rules | stylegitdeploymentagent-behaviour+1 | 62/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/wpf-ui-patterns.mdc · 103 | Cursor rules | setuplint-formatstylearch+1 | 66/100 | 3 days ago | |
| SethRobinson/UGTLiveAGENTS.md · 103 | AGENTS.md | testgitsecurityperformance+1 | 74/100 | 3 days ago |
Diff against .cursor/rules/ui-ux-patterns.mdc Diff against .cursor/rules/architecture-patterns.mdc Diff against .cursor/rules/async-threading-patterns.mdc Diff against .cursor/rules/code-style-conventions.mdc Diff against .cursor/rules/configuration-management.mdc Diff against .cursor/rules/debugging-testing.mdc Diff against .cursor/rules/locale-invariant-formatting.mdc Diff against .cursor/rules/service-integration-patterns.mdc Diff against .cursor/rules/ugtlive-project-guide.mdc Diff against .cursor/rules/versioning-workflow.mdc Diff against .cursor/rules/wpf-ui-patterns.mdc Diff against AGENTS.md
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| ThanhTrunggDEV/DontBeLazy.cursor/rules/rust-testing.mdc · 6 | Cursor rules | teststyletesting-strategy | 90/100 | 3 days ago | |
| ThanhTrunggDEV/DontBeLazy.cursor/rules/dart-testing.mdc · 6 | Cursor rules | teststyletypestesting-strategy | 85/100 | 3 days ago | |
| ThanhTrunggDEV/DontBeLazy.cursor/rules/dart-coding-style.mdc · 6 | Cursor rules | lint-formatstyletypesdo-not | 84/100 | 3 days ago | |
| ThanhTrunggDEV/DontBeLazy.cursor/rules/rust-security.mdc · 6 | Cursor rules | stylesecuritydatabasedo-not | 80/100 | 3 days ago | |
| imazen/imageflow.cursor/rules/ci.mdc · 4.4k | Cursor rules | setupbuildtestarch+3 | 79/100 | 3 days ago | |
| ThanhTrunggDEV/DontBeLazy.cursor/rules/rust-coding-style.mdc · 6 | Cursor rules | lint-formatstyle | 78/100 | 3 days ago | |
| ThanhTrunggDEV/DontBeLazy.cursor/rules/dart-hooks.mdc · 6 | Cursor rules | lint-formatarchtesting-strategygit+1 | 78/100 | 3 days ago | |
| SethRobinson/UGTLive.cursor/rules/architecture-patterns.mdc · 103 | Cursor rules | buildtestlint-formatstyle+6 | 77/100 | 3 days ago |
