“Can I really learn a language just by playing this game?”
I’ve asked myself this question countless times. While I’ve tried playing with a dictionary in one hand, the pace of the story inevitably grinds to a halt, shattering the immersion I crave. I know, some might say, “That’s just how it is,” but my brain refuses to accept it.
I believe there’s a smarter way—a way to bridge the gap between gaming and learning without breaking the experience.
This series is a chronicle of my journey to build a custom screen-translator using Python. I’m not just building a tool; I’m documenting the entire process: the frustration of tweaking OCR accuracy, the battle against translation lag, and the roadblocks I hit while tackling asynchronous processing.
My roadmap is laid out below. I’ve only just finished Phase 1, but I’m excited to show you how I transform this into an ideal language-learning environment. Join me on this journey as I turn my “greedy” aspirations into code.
“What if I could learn a language just by playing games? It’s the ultimate two-for-one deal.”
That’s exactly what I thought two hours ago. I launched the game with full enthusiasm, dictionary in hand, ready to master the language. But soon, I hit a wall. Stop, look up a word, go back to the screen. Stop, look up, back to the screen.
Two hours later, I looked at the game clock—it barely moved. I wasn’t really enjoying the story, nor was I actually retaining the language. The frustration reached a boiling point. “Forget it. I’m done!”
I couldn’t help but wonder: why isn’t there a tool that assists me without killing the flow? Why isn’t there something that lets me learn while keeping the immersion alive?
The answer was clear: if it doesn’t exist, I have to build it myself.
【Project Requirements Definition: Video Games for Language Learning】
Here, I define the core requirements for this project. The goal is to create a tool that serves as a bridge for language acquisition and keeps a record of that journey, all without ever compromising the immersive experience of playing a game. Furthermore, I believe that a degree of “cognitive stress” is essential to the learning process. With these principles in mind, I have established the following requirements.

1. Project Overview
A language learning assistant tool that operates entirely locally and offline, designed to cultivate a “thinking-in-English brain” while preserving immersion during gameplay.
2. Core Concepts (Core Philosophy)
- Fully Local / Offline Driven: Eliminates external API and network dependencies to achieve zero cost, low performance overhead, and robust privacy protection.
- Leveraging “Cognitive Stress”: Avoids providing flawless machine translations. By offering dictionary-based hints instead, it deliberately introduces a cognitive load (thinking effort) to the user’s brain, maximizing learning retention.
- Cultivating an “English Brain”: Supports the process of breaking down words in their original English order and synthesizing meaning in the user’s head through intuitive UI design.
3. Functional Requirements
- Trigger Feature: Initiates screen capture via a global hotkey (e.g., F12).
- Raw Context Capture: Extracts English text from the game screen using OCR (e.g., EasyOCR).
- Vocabulary Extraction: Tokenizes sentences and extracts lemmas (base forms) using natural language processing tools (e.g., spaCy).
- Dictionary Mapping: Maps extracted words to definitions using a local dictionary database.
- Translation Log: Automatically appends learning logs into a CSV format (original text, extracted words, candidate definitions, timestamp).
- Dictionary Selection & Configuration: Highly customizable options allowing users to select dictionary sources and display styles (e.g., toggling translations on/off) based on their learning proficiency.
4. Data Structure for Learning Logs

The data is stored in the following structure, optimized for subsequent integration with Anki.
| Field | Description |
timestamp | Capture date and time |
context | Original English text extracted via OCR (context) |
words | Parsed linguistic data for each word |
translations | Multiple candidate definitions retrieved from the local dictionary |
Tech Stack & Justification
To realize this project—which balances complete local execution, zero operational costs, and high extensibility—I have carefully selected the following technology stack:
- Language: Python
- Why: Python offers an unmatched ecosystem for NLP, such as
EasyOCRandspaCy. Furthermore, its versatility allows for a seamless transition from the current CLI prototype to a full-featured UI (using Streamlit) or even future integration with Anki, making it the most strategic choice for long-term development.
- Why: Python offers an unmatched ecosystem for NLP, such as
- OCR Engine: EasyOCR
- Why: Unlike cloud-based solutions (like Google Cloud Vision API), I opted for an open-source, locally executable engine. This ensures absolute privacy and zero latency, which are critical for maintaining the immersive flow of a gaming session—even without an active internet connection.
- NLP & Linguistic Analysis: spaCy
- Why: Rather than relying on simple string matching,
spaCyenables high-speed lemmatization and part-of-speech tagging. This allows the tool to accurately identify base word forms even from complex, context-heavy in-game sentences, ensuring precise dictionary mapping.
- Why: Rather than relying on simple string matching,
- Data Persistence: CSV / SQLite
- Why: I chose CSV for its portability and direct compatibility with Anki import workflows. For future scalability, the architecture is designed to transition seamlessly to SQLite. By avoiding heavy database management systems, I can keep the tool lightweight while empowering users to own their “learning assets” securely on their own machines.
Conclusion & Future Work
“Project Video Games for Language Learning” is far more than a simple translator. It is a dedicated platform designed to bridge the gap between gaming and language acquisition, fostering an “English brain” that deciphers meaning actively rather than relying on machine-provided answers.
The requirements and technical choices outlined here are rooted in a single philosophy: maximizing immersion while embracing productive cognitive friction. Moving forward, I will accelerate the implementation through the following development roadmap:
- Prototype Construction: Establishing the core screen-capture and OCR pipeline.
- Log Optimization: Integrating dictionary lookups and structuring data for optimal Anki synchronization.
- UI/UX Refinement: Developing an intuitive interface that transforms “cognitive stress” into a powerful catalyst for language retention.
“Embrace the inconvenience, hack the experience with technology.”
Through this project, I aim to redefine the landscape of language learning as an engineer. The next update will feature the initial codebase for OCR implementation, along with deep technical insights gained from extracting text directly from live gameplay.
Stay tuned for the next step in this development journey!

