meikipop: a Japanese popup dictionary that reads the screen with OCR
meikipop - universal japanese ocr popup dictionary for windows, linux and macos
At a glance
- What is it?
- meikipop is a Python desktop application that reads Japanese text off your screen with optical character recognition and shows dictionary entries in a popup, on Windows, Linux and macOS. It is deliberately not a flashcard miner and not a multi-dictionary tool.
- Who is it for?
- Adopt meikipop if you read Japanese in games, manga, videos or software with no selectable text, you want lookups to stay local, and you are on Windows or Linux X11 where the platform support is strongest. Skip it if you want Anki card generation, several dictionaries at once, or a zero-setup Wayland experience.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A dictionary lookup for text you cannot select
meikipop solves a narrow and irritating problem: reading Japanese in places where the characters are pixels rather than text. The project description calls it a universal Japanese OCR popup dictionary for Windows, Linux and macOS, and the feature list claims it works everywhere because if you can see it on your screen you can look it up, without the limits of browser extensions, hooks, or application specific tools. The target reader is a language learner playing a Japanese game, reading a scanned manga page, or watching a video with hard coded subtitles, where a browser based dictionary is simply not an option. The interaction is deliberately minimal. You run the application, move the mouse over Japanese text, and a popup with dictionary entries appears. The project is explicit that its design goal is to do one thing well, which is fast, low friction, on screen lookup, and it names the browser based popup dictionary Nazeka as the inspiration for that feel, and owocr for its OCR architecture.
The OCR backend is pluggable, and that choice has real costs
The architecture lets you pick the OCR engine that fits the situation, and the three documented options differ sharply. The default, meikiocr, is local and is described as possibly the fastest local option on CPU, able to run faster still on NVIDIA GPUs, but it was primarily designed for video games with horizontal text and has poor accuracy for vertical text, which is exactly the case manga readers care about. Google Lens is the remote option: high accuracy, but it requires an internet connection and has higher latency than the local engines. Chrome Screen AI is the third, a local alternative worth checking if meikiocr does not fit. The privacy split is therefore explicit in the documentation: local engines keep text on your machine, the remote engine sends it out. The dependency list backs this up, pulling in requests and Pillow for remote work, plus websockets, protobuf and betterproto for the Chrome Screen AI path, and onnxruntime and the meikiocr package for local inference on Windows.
Region mode and fullscreen mode trade accuracy against speed
You choose how much of the screen gets scanned. The documentation offers a region mode, where the first run asks you to select an area of the screen, or a fullscreen mode, and the stated reason for using a region is to improve performance, for example scanning only a game window or a single manga page. This is the main tuning knob in normal use, and it interacts with the backend choice: a large fullscreen capture piped to a remote service will be slow, while a small region through a local GPU engine can be quick. The tray icon is the control surface. Right clicking it opens the settings, reselects the scan region, changes the OCR provider, or quits the application, so switching backends does not mean editing config files by hand.
Installing from PyPI and what the first launch downloads
If you already have Python 3.10 or newer, the recommended path is a package install, and the pyproject file confirms the floor with requires-python set to 3.10 or above. The application itself is a console script named meikipop, and the GUI is built on PyQt6.
#... activate your environment if any
pip install --upgrade meikipop
meikipop # run the applicationOne thing to expect on the first launch: the documentation warns that a dictionary and OCR models may be downloaded when meikipop is started for the first time. That is not a small detail, because it means the first run needs network access and disk space even if you have chosen a local OCR backend, and the dictionary file is the thing that makes lookups instant later on. The project also ships prepackaged binaries on the releases page for people who do not want Python installed at all, described as a download, unpack and start path with no Python requirement.
An editable install for people who want to change the code
If you plan to modify, fork, or contribute to meikipop, the recommended approach is to check out the repository and install it in editable mode rather than pulling the released package from PyPI. The rationale given is that this is the most flexible option and it lets you add your own custom OCR providers.
#... activate your environment if any
git clone https://github.com/rtr46/meikipop.git
cd meikipop
pip install -e .
meikipop # run the applicationThe packaging layout supports that workflow. The source lives under src/, the build backend is setuptools with a requirement of setuptools 61 or above, and the console script maps meikipop to meikipop.main:main. There are also three additional entry points shipped as commands: build-dict, import-yomitan-dict-html, and import-yomitan-dict-text. The first prepares dictionary data, the other two bring in Yomitan dictionaries, in HTML or plain text form, which is the supported way to work with a dictionary that is not the default one.
Settings and dictionary data live in platform specific directories
Configuration is done through the settings GUI, reachable by right clicking the tray icon, and changes are written to a per platform user data directory that holds two files: config.ini and dictionary.pkl. The location differs on each system, and the documentation lists all three: %LOCALAPPDATA%\meikipop\ on Windows, ~/.config/meikipop/ on Linux, and ~/Library/Application Support/meikipop/ on macOS. The platformdirs dependency in the pyproject file is what handles that lookup, and the same file also carries the GUI resources and a deconjugator.json script, which points to the project handling verb conjugation as part of dictionary output. The dictionary is described as pre processed into an optimized format for instant lookups, with the lightweight interface designed to stay responsive, and the .pkl extension tells you that dictionary content is stored as serialized Python data rather than a plain text file.
macOS permissions, Wayland, and the uneven platform story
The platform support is honest about its edges. Windows and Linux on X11 are the primary supported platforms, macOS is supported thanks to community contributions, and Wayland is described as working in principle but requiring extra troubleshooting. On macOS you have to go into System Preferences, then Security & Privacy, then Privacy, and add or enable your terminal application under Input Monitoring, Screen Recording and Accessibility, since the app has to read pixels and watch the mouse. The documentation also warns that there may be problems with Python 3.14 and points to a list of workarounds in an issue tracker thread. For Wayland the advice is blunt: the ecosystem is described as fragmented and deliberately hostile to apps like this, so no support is expected, and the recommendation is to try the flatpak distribution first, otherwise to install from PyPI and avoid the Linux prebuilt binary, which was only tested on X11. There are also per distribution package lists for Fedora and Ubuntu, and a tip to test lookups against a windowed XWayland application such as Steam if popups do not appear.
Two things meikipop refuses to become
The philosophy section is unusually direct, and it is worth reading before you commit, because it defines the boundaries of the tool. meikipop is not an SRS mining tool: there is no functionality to automatically create flashcards for programs like Anki. And it is not a multi-dictionary tool: although Yomitan dictionaries can be imported, the design targets a single, semi custom JMdict plus Kanjidic dictionary, so running several dictionaries side by side is not the intended use. This narrowness is a feature if you want one clean lookup path, and a limitation if you expected a full language learning suite. The licence is GPL-3.0, so any distribution or derivative you ship has to carry the same licence obligations, which matters if you plan to fold it into a closed source product. The project itself is in good shape: the last push was on 2026-10-19, and version 2.0.6 was published on 2026-10-11, following 2.0.5 on 2026-09-25.
Editorial conclusion
Adopt meikipop if you read Japanese in games, manga, videos or software with no selectable text, you want lookups to stay local, and you are on Windows or Linux X11 where the platform support is strongest. Skip it if you want Anki card generation, several dictionaries at once, or a zero-setup Wayland experience. Before you commit, check the OCR backend choice against your text, because the default local engine is described as poor for vertical text, and check the first run, which downloads a dictionary and OCR models.
Frequently asked questions
How do I install meikipop on Linux or Windows?
With Python 3.10 or newer installed, run pip install --upgrade meikipop and then start the meikipop command. Prepackaged binaries are also published on the releases page, so a Python install is not required.
Does meikipop work without an internet connection?
The local OCR backends, meikiocr and Chrome Screen AI, work offline, but the Google Lens backend is remote and requires an internet connection with higher latency. The first run may also download a dictionary and OCR models.
Can meikipop create Anki flashcards or use several dictionaries at once?
No on both counts. The project states that it is not an SRS mining tool with no automatic flashcard creation for Anki, and it is not a multi-dictionary tool, even though Yomitan dictionaries can be imported.
Why does meikipop not show any popups on Wayland?
Wayland support is described as working in principle but needing extra steps, and the documentation recommends trying the flatpak distribution first, making sure XWayland works, and testing lookups on a windowed XWayland application such as Steam.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/rtr46-meikipop)Was this useful?