BUG: OCR was reading text from Discord, EU-Utility UI, and other windows.
FIX:
1. Added find_entropia_window() - Uses win32gui + psutil on Windows to find
the game window by process name 'Entropia.exe' and window title containing
'Entropia Universe'. Returns (left, top, width, height).
2. Added capture_entropia_region() - Captures only the game window region,
falls back to full screen if window not found.
3. Added is_valid_skill_text() - Filters out non-game text patterns:
- Discord, Event Bus, Game Reader, Test, Page Scanner, HOTKEY MODE
- UI elements like 'Skill Tracker', 'Calculator', 'Nexus Search'
- Debug text like '[SkillScanner]', 'Parsed:', 'Cleared'
- Process names like 'Entropia.exe', 'Client (64 bit)', 'Arkadia'
- Lines with >10 words (skills aren't that long)
4. Added recognize_image() method to OCRService for convenience.
5. Modified SkillOCRThread.run() to:
- Capture only Entropia window
- Filter text before parsing
- Use _parse_skills_filtered() which validates each line
6. Added _parse_skills_filtered() method that:
- Splits text by lines
- Only keeps lines containing a valid rank
- Validates each line with is_valid_skill_text()
- Logs filtered lines for debugging
RESULT:
- Scanner now ONLY reads from the game window
- Invalid text (Discord, UI, debug) is filtered out
- Much cleaner skill parsing results
Note: Window title varies by location (e.g., '[Arkadia]', '[Calypso]')
but process name is always 'Entropia.exe'.