EasyRead puts a translated paper and the original side by side
把英文论文读成舒服的中文:本地 PDF 论文翻译、原文对照、边读边问 AI、文献管理。Read English papers in comfortable Chinese.
At a glance
- What is it?
- EasyRead is a desktop application for reading English academic papers in Chinese: an Electron shell over a Python backend that translates a PDF page by page in the background, keeps the original paragraph next to the translation, and gives you a chat panel that answers questions about the document you are reading. The engine is your choice, from a CLI tool you already subscribe to to a local model on your own machine.
- Who is it for?
- EasyRead suits a researcher or student who reads a lot of English papers and wants a readable Chinese rendering with the original one click away, and it suits anyone who wants the translation engine to be a subscription they already pay for, or a local model, rather than a vendor key.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 3 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 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
An Electron shell over a Python document layer
The repository is two applications in one package. The `electron/` directory holds the desktop shell, and the `package.json` names the project `easyread-desktop` at version 1.4.3, with Electron and electron-builder as the only development dependencies and a single entry point at `electron/main.cjs`. The `dev` and `start` scripts both run `electron .`, and the `dist` script first runs `python scripts/build_backend.py` and then electron-builder, which is how the Python side ends up inside the packaged application. Underneath, the `easyread/` directory is a normal Python package with its own `pyproject.toml`: version 1.4.3, MIT licensed, requiring Python 3.10 or newer, and depending on pypdfium2, pdfplumber, pillow and pypdf for the document work, plus truststore and certifi for certificate handling. It installs a console entry point named `easyread`, so the same code can run as a script as well as a desktop application.
The engine list is the real configuration surface
What translates the paper is up to you, and the documentation lays the options out as a table. The first group is CLI tools you install and log into: Claude Code, described as the recommended option because it needs no key, uses your subscription allowance and looks at the original page image to check formulas, and is said to give the best translation; Codex CLI, which uses a ChatGPT account; CodeBuddy CLI; and Grok Build, Antigravity CLI or Cursor CLI. The second group is API access. Domestic endpoints such as DeepSeek, Zhipu, Alibaba Bailian, Kimi, SiliconFlow and ModelScope take an API key, and the documentation notes that a twenty page paper on DeepSeek costs a few tenths of a currency unit. Overseas endpoints are OpenAI, Anthropic, Gemini, OpenRouter, Groq and Cerebras, some with free allowance, and the third API group runs locally through Ollama or LM Studio, with a recommendation of qwen3.5:9b, or 4b on a smaller GPU, for a fully offline setup. A fourth option accepts any OpenAI compatible endpoint, with both Chat Completions and Responses formats supported and the address and key saved per endpoint.
Translation and commentary are kept in different places on purpose
The design decision that separates this from a document dump into a translator is where the AI is allowed to speak. The body text holds a faithful translation, and the explanations and answers live in the margin, so a reader can tell at a glance which sentences came from the paper and which came from a model. The ask AI panel on the right holds a live conversation whose answers stream out word by word, several passages can be quoted at once by dragging selected text into the input, and a question such as how the highlighted formulas relate is answered by colour, because the highlights are visible to the model. Multiple conversations can run side by side, each with its own model choice, and a good answer can be moved into the margin. Two answer modes are documented in detail. The ASD-STE100 mode answers in simple Chinese while keeping technical terms, formulas and numbers, borrowing the short sentences and active phrasing of that English standard without claiming the Chinese output conforms to it, and it says so explicitly. The deep reading mode is for questions about the authors' reasoning, and it works by restoring the problem the paper set, separating the designs that would collapse if removed from the ones added in passing, plugging the key formula into concrete numbers, and then checking the numbers in the text and the figures against the baseline conditions. Where the paper does not report something, it says the paper did not report it rather than inventing a figure.
Importing a library from Zotero, a folder, or a link
The import dialog can migrate an entire Zotero library. The documentation says it finds Zotero's data folder, brings in the papers that have PDFs together with their collections, including nested ones, and their titles, authors, years, journals, DOIs and abstracts. It only reads a copy of Zotero's database, does not modify Zotero, and can be run repeatedly. There is also a whole folder import, where the subfolder structure becomes the category structure. Both run in the background, can be stopped part way, and do not translate on import, so you decide what to read later. The third option is linking instead of copying. Zotero and folder imports can be ticked to link local PDFs without duplicating the original file, and the command line has a `--link` option. The original PDF stays where it was, while the cache, notes and progress live in EasyRead, deleting a paper does not delete the original, and an already imported paper does not change how it is stored if you import it again.
The library sidebar is a reference manager with a reading queue
The sidebar is described as working like a chat application. Papers and categories can be pinned, you can create your own categories, rename or delete them, drag papers into them, nest them with subcategories, hide the built in ones, and browse by recently read, search, unread or reading or read status, stars, reading progress, and copying a citation in GB/T 7714, APA or BibTeX. A paper or a list of papers can be exported as a single offline HTML file to send to someone, or as a small read only mobile version to open in a phone browser. Deleted papers go to a recycle bin and can be restored, and keyboard shortcuts can be remapped. The library itself can be moved in the settings: to another disk, or into a folder your own sync service watches, with the original library kept, a copy made, checked, and the change applied after a restart, and existing libraries can be adopted rather than recreated. The translation itself is editable, since double clicking a paragraph lets you rewrite it, and changing a term in the glossary replaces it throughout the document.
Installing on three platforms, one of which fights the system
The simplest path is the installer, so that Python is not needed. On Windows it is an `EasyRead-Setup-x.x.x.exe` that is installed by double clicking, with no code signing, so Windows may show a protected PC warning. On Apple silicon macOS it is a DMG that you drag into Applications, and the first launch is blocked because the build uses the project's own self signed certificate for in app updates rather than an Apple developer certificate and has not been notarised. The documented step is to open System Settings, find the security prompt and choose to open anyway, or, once you have confirmed the file really came from the official repository, to remove the quarantine attribute:
xattr -dr com.apple.quarantine /Applications/EasyRead.appThe documentation is explicit that this removes the quarantine flag and does not repair a damaged file, and it tells you to stop if the system reports malware instead. On Linux it is an AppImage you make executable with `chmod +x`; if the system reports a missing `libfuse.so.2`, the documented workaround is to configure FUSE or to run `./EasyRead-x.x.x.AppImage --appimage-extract` and then run the extracted `AppRun`. Where your data lives differs by platform: on Windows the installer puts it in a `data` folder inside the installation directory, on macOS and Linux it goes in an `EasyRead` folder in your home directory, and uninstalling and reinstalling does not lose it.
Costs, concurrency and what the changelog tells you
Three practical matters are documented that decide whether the app is pleasant to live with. The first is cost visibility: every translation and every AI answer records the tokens it used, and when you are on a Claude subscription the app can show how much of the five hour and seven day allowance is left and when it resets. The second is concurrency. Translation runs one paper at a time by default, with segments inside a single paper still handled in parallel, and the number of papers translated at once can be set between one and four in the settings with a restart needed. The documentation warns that running several papers at once stacks on top of the per paper concurrency, which raises memory use and the chance of hitting a model rate limit, and recommends keeping the default. A page that fails to translate, whether from rate limiting, network trouble or an exhausted allowance, is retried automatically, then skipped so the rest of the document continues, and the failed pages can be retried in one action later. The third is writes. Changes are held in the browser first and only discarded once the local service confirms the file was written, and if the translation side later changes a paragraph you edited, you get a warning rather than an overwrite. The project publishes frequent releases, v1.4.1, v1.4.2 and v1.4.3 within the same week, with the last push on 2026-10-15, under the MIT licence.
Editorial conclusion
EasyRead suits a researcher or student who reads a lot of English papers and wants a readable Chinese rendering with the original one click away, and it suits anyone who wants the translation engine to be a subscription they already pay for, or a local model, rather than a vendor key. It is a poor fit for a shared or locked down machine, since the install path depends on a self signed macOS build, an unsigned Windows installer and a FUSE capable AppImage, and it is a poor fit if you need the translation to be reproducible offline for every page, because the default engines are network models. Before you install it, check three things: which engine you will point it at, since the free quota and the output quality differ sharply between them, where your library will live on disk, because the data folder differs between the Windows installer and the macOS and Linux builds, and the release you pin, with v1.4.3 published on 2026-10-15 and the project under the MIT licence.
Frequently asked questions
Which translation engine does EasyRead use?
You choose. The documented options are CLI tools you log into such as Claude Code, Codex CLI, CodeBuddy CLI, Grok Build, Antigravity CLI and Cursor CLI, API endpoints for domestic and overseas providers, local models through Ollama or LM Studio, and any custom OpenAI compatible address. The Claude Code option is described as the recommended one because it needs no key and checks the original page image for formulas.
Can EasyRead import my Zotero library?
Yes. The import dialog can migrate an entire Zotero library, bringing in the papers with PDFs, their collections including nested ones, and their metadata. It reads a copy of Zotero's database, does not modify Zotero, and can be repeated without importing automatically translating the papers.
Does EasyRead copy or link the PDF files it imports?
Both are possible. Zotero and folder imports can be ticked to link local PDFs without copying the original file, and the command line offers a `--link` option. Linked originals stay where they are, while the cache, notes and progress stay in EasyRead, and deleting a paper in EasyRead does not delete the original file.
How do I install EasyRead on macOS?
Download the arm64 DMG from the releases page and drag EasyRead into Applications. The first launch is usually blocked because the build is self signed and not notarised, so you open System Settings, find the security prompt and choose to open anyway, or remove the quarantine attribute with `xattr -dr com.apple.quarantine /Applications/EasyRead.app` after confirming the file came from the official repository.
Can EasyRead work without sending my papers to a cloud service?
The translation engine can be a local model through Ollama or LM Studio, which the documentation calls fully offline, with qwen3.5:9b recommended and 4b suggested for a smaller GPU. The rest of the app runs locally, and the library can live on your own disk or in a sync folder you control.
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/edwardxlai-easyread)Was this useful?