<!-- markdownlint-disable MD013 MD026 MD033 -->
# NormCap
**_OCR powered screen-capture tool to capture information instead of images. For Linux,
macOS and Windows._**
[](https://github.com/dynobo/normcap/actions/workflows/cicd.yaml)
[](https://coveralls.io/github/dynobo/normcap)
[](https://github.com/dynobo/normcap/security/code-scanning/tools/CodeQL/status/)
[](https://hanadigital.github.io/grev/?user=dynobo&repo=normcap)
[](https://pypi.org/project/normcap)
[](https://flathub.org/apps/details/com.github.dynobo.normcap)
[](https://aur.archlinux.org/packages/normcap)
**Links:** [Source Code](https://github.com/dynobo/normcap) |
[Documentation](https://dynobo.github.io/normcap/) |
[FAQs](https://dynobo.github.io/normcap/#faqs) |
[Releases](https://github.com/dynobo/normcap/releases) |
[Changelog](https://github.com/dynobo/normcap/blob/main/CHANGELOG)
[](https://raw.githubusercontent.com/dynobo/normcap/main/assets/normcap.gif)
## Installation
Choose **_one_** of the options for a prebuilt release. If you encounter an issue please
take a look at the [FAQs](https://dynobo.github.io/normcap/#faqs) or
[report](https://github.com/dynobo/normcap/issues) it.
#### Windows
- [NormCap-0.6.0-x86_64-Windows.msi](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64-Windows.msi)
(Installer)
- [NormCap-0.6.0-x86_64-Windows.zip](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64-Windows.zip)
(Portable)
#### Linux
It's recommended to install NormCap from [Flathub](https://flathub.org):
```sh
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub com.github.dynobo.normcap
```
<a href="https://flathub.org/apps/details/com.github.dynobo.normcap"><img src="https://flathub.org/assets/badges/flathub-badge-en.png" width="160"/></a>
Alternative options:
- [NormCap-0.6.0-x86_64.AppImage](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64.AppImage) - ⚠️ ***deprecated***
(Requires [fuse](https://dynobo.github.io/normcap/faqs/#linux-appimage-error-appimages-require-fuse-to-run))
- [`normcap` @ AUR](https://aur.archlinux.org/packages/normcap) (Arch/Manjaro)
#### macOS
**Note:** You must allow the unsigned application on first start: "System Preferences" →
"Security & Privacy" → "General" → "Open anyway". You also need to allow NormCap to take
screenshots. ([#135](https://github.com/dynobo/normcap/issues/135))
- [NormCap-0.6.0-x86_64-macOS.dmg](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64-macOS.dmg)
(Installer for x86/64)
- [NormCap-0.6.0-arm64-macOS.dmg](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-arm64-macOS.dmg)
(Installer for M1)
## Use Python package
As an _alternative_ to the prebuilt packages above, you can install the
[NormCap Python package](https://pypi.org/project/normcap/) for **Python >=3.9**, but it
requires more setup:
#### On Linux
```sh
# Install dependencies (Ubuntu/Debian)
sudo apt install build-essential tesseract-ocr tesseract-ocr-eng libtesseract-dev libleptonica-dev wl-clipboard
## Install dependencies (Arch)
sudo pacman -S tesseract tesseract-data-eng wl-clipboard
## Install dependencies (Fedora)
sudo dnf install tesseract wl-clipboard
## Install dependencies (openSUSE)
sudo zypper install python3-devel tesseract-ocr tesseract-ocr-devel wl-clipboard
# Install normcap
pip install normcap
# Run
./normcap
```
#### On macOS
```sh
# Install dependencies
brew install tesseract tesseract-lang
# Install normcap
pip install normcap
# Run
./normcap
```
#### On Windows
1\. Install `Tesseract 5` by using the
[installer provided by UB Mannheim](https://github.com/UB-Mannheim/tesseract/wiki).
2\. Identify the path to the Tesseract base folder. It should contain a `/tessdata` subfolder
and the `tesseract.exe` binary. Depending on whether you installed Tesseract system-wide or
in userspace, the base folder should be:
```
C:\Program Files\Tesseract-OCR
```
or
```
C:\Users\<USERNAME>\AppData\Local\Programs\Tesseract-OCR
```
3\. Adjust environment variables:
- Create an environment variable `TESSDATA_PREFIX` and set it to _your_ Tesseract base
folder, e.g.: "System Properties" → Tab "Advanced" → "Environment Variables …" →
"New …" → Variable: `TESSDATA_PREFIX`, Value: `"C:\Program Files\Tesseract-OCR"`
- Append Tesseract's base folder to the environment variable `PATH`, e.g.: "System
Properties" → Tab "Advanced" → "Environment Variables …" → Section "User variables"
→ Select `PATH` → "Edit …" → Add a new entry `"C:\Program Files\Tesseract-OCR"`
- To test your setup, open a new `cmd`-terminal and run:
```cmd
tesseract --list-langs
```
4\. Install and run NormCap:
```bash
# Install normcap
pip install normcap
# Run
normcap
```
## Development
Prerequisites for setting up a development environment:
[**Python >=3.9**](https://www.python.org/downloads/),
[**uv**](https://docs.astral.sh/uv/getting-started/installation/), and
[**Tesseract >=5.0**](https://tesseract-ocr.github.io/tessdoc/#5xx) (including **language
data**).
```sh
# Clone repository
git clone https://github.com/dynobo/normcap.git
# Change into project directory
cd normcap
# Create virtual env and install dependencies
uv sync
# Register pre-commit hook
uv run pre-commit install
# Run NormCap in virtual env
uv run python -m normcap
```
## Contribute to UI translations
Please use [Weblate](https://hosted.weblate.org/projects/normcap/ui/) to complement or
correct text for existing languages as well as for adding new languages.
(If you prefer not to use Weblate, you can also [do it manually](./normcap/resources/locales/README.md), but be aware that this is more cumbersome.)
## Credits
This project uses the following non-standard libraries:
- [pyside6](https://pypi.org/project/PySide6/) - _bindings for Qt UI Framework_
And it depends on external software:
- [tesseract](https://github.com/tesseract-ocr/tesseract) - _OCR engine_
- [zxing-cpp](https://github.com/zxing-cpp/zxing-cpp) - _QR & barcode detection_
- [wl-clipboard](https://github.com/bugaevc/wl-clipboard) - _Wayland clipboard
utilities_
- [xclip](https://github.com/astrand/xclip) - _CLI to the X11 clipboard_
Packaging is done with:
- [briefcase](https://pypi.org/project/briefcase/) - _converting Python projects into
standalone apps_
Thanks to the maintainers of those nice tools!
## Similar open source tools
If NormCap doesn't fit your needs, try these alternatives (no particular order):
- [TextSnatcher](https://github.com/RajSolai/TextSnatcher) (Linux)
- [GreenShot](https://getgreenshot.org/) (Windows, macOS)
- [TextShot](https://github.com/ianzhao05/textshot) (Windows)
- [gImageReader](https://github.com/manisandro/gImageReader) (Linux, Windows)
- [Capture2Text](https://sourceforge.net/projects/capture2text) (Windows)
- [Frog](https://github.com/TenderOwl/Frog) (Linux)
- [Textinator](https://github.com/RhetTbull/textinator) (macOS)
- [Text-Grab](https://github.com/TheJoeFin/Text-Grab) (Windows)
- [dpScreenOCR](https://danpla.github.io/dpscreenocr/) (Linux, Windows)
- [PowerToys Text Extractor](https://learn.microsoft.com/en-us/windows/powertoys/text-extractor)
(Windows)
## Why "NormCap"?
See [XKCD](https://xkcd.com):
[](https://xkcd.com/2116/)
## Certification

## Contributors
<a href="https://github.com/dynobo/normcap/graphs/contributors">
<img src="https://contrib.rocks/image?repo=dynobo/normcap" />
</a>
<small>Made with [contrib.rocks](https://contrib.rocks)</small>
Raw data
{
"_id": null,
"home_page": null,
"name": "normcap",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "capture, clipboard, ocr, screenshot",
"author": null,
"author_email": "dynobo <dynobo@mailbox.org>",
"download_url": "https://files.pythonhosted.org/packages/ce/74/eee5d3ec97f8d46fa7c48ac303aeca006ba2cebd95d0a01e45f62beeec41/normcap-0.6.0.tar.gz",
"platform": null,
"description": "<!-- markdownlint-disable MD013 MD026 MD033 -->\n\n# NormCap\n\n**_OCR powered screen-capture tool to capture information instead of images. For Linux,\nmacOS and Windows._**\n\n[](https://github.com/dynobo/normcap/actions/workflows/cicd.yaml)\n[](https://coveralls.io/github/dynobo/normcap)\n[](https://github.com/dynobo/normcap/security/code-scanning/tools/CodeQL/status/)\n\n[](https://hanadigital.github.io/grev/?user=dynobo&repo=normcap)\n[](https://pypi.org/project/normcap)\n[](https://flathub.org/apps/details/com.github.dynobo.normcap)\n[](https://aur.archlinux.org/packages/normcap)\n\n\n**Links:** [Source Code](https://github.com/dynobo/normcap) |\n[Documentation](https://dynobo.github.io/normcap/) |\n[FAQs](https://dynobo.github.io/normcap/#faqs) |\n[Releases](https://github.com/dynobo/normcap/releases) |\n[Changelog](https://github.com/dynobo/normcap/blob/main/CHANGELOG)\n\n[](https://raw.githubusercontent.com/dynobo/normcap/main/assets/normcap.gif)\n\n## Installation\n\nChoose **_one_** of the options for a prebuilt release. If you encounter an issue please\ntake a look at the [FAQs](https://dynobo.github.io/normcap/#faqs) or\n[report](https://github.com/dynobo/normcap/issues) it.\n\n#### Windows\n\n- [NormCap-0.6.0-x86_64-Windows.msi](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64-Windows.msi)\n (Installer)\n- [NormCap-0.6.0-x86_64-Windows.zip](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64-Windows.zip)\n (Portable)\n\n#### Linux\n\nIt's recommended to install NormCap from [Flathub](https://flathub.org):\n\n```sh\nflatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\nflatpak install flathub com.github.dynobo.normcap\n```\n\n<a href=\"https://flathub.org/apps/details/com.github.dynobo.normcap\"><img src=\"https://flathub.org/assets/badges/flathub-badge-en.png\" width=\"160\"/></a>\n\nAlternative options:\n\n- [NormCap-0.6.0-x86_64.AppImage](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64.AppImage) - \u26a0\ufe0f ***deprecated***\n (Requires [fuse](https://dynobo.github.io/normcap/faqs/#linux-appimage-error-appimages-require-fuse-to-run))\n- [`normcap` @ AUR](https://aur.archlinux.org/packages/normcap) (Arch/Manjaro)\n\n#### macOS\n\n**Note:** You must allow the unsigned application on first start: \"System Preferences\" \u2192\n\"Security & Privacy\" \u2192 \"General\" \u2192 \"Open anyway\". You also need to allow NormCap to take\nscreenshots. ([#135](https://github.com/dynobo/normcap/issues/135))\n\n- [NormCap-0.6.0-x86_64-macOS.dmg](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-x86_64-macOS.dmg)\n (Installer for x86/64)\n- [NormCap-0.6.0-arm64-macOS.dmg](https://github.com/dynobo/normcap/releases/download/v0.6.0/NormCap-0.6.0-arm64-macOS.dmg)\n (Installer for M1)\n\n## Use Python package\n\nAs an _alternative_ to the prebuilt packages above, you can install the\n[NormCap Python package](https://pypi.org/project/normcap/) for **Python >=3.9**, but it\nrequires more setup:\n\n#### On Linux\n\n```sh\n# Install dependencies (Ubuntu/Debian)\nsudo apt install build-essential tesseract-ocr tesseract-ocr-eng libtesseract-dev libleptonica-dev wl-clipboard\n\n## Install dependencies (Arch)\nsudo pacman -S tesseract tesseract-data-eng wl-clipboard\n\n## Install dependencies (Fedora)\nsudo dnf install tesseract wl-clipboard\n\n## Install dependencies (openSUSE)\nsudo zypper install python3-devel tesseract-ocr tesseract-ocr-devel wl-clipboard\n\n# Install normcap\npip install normcap\n\n# Run\n./normcap\n```\n\n#### On macOS\n\n```sh\n# Install dependencies\nbrew install tesseract tesseract-lang\n\n# Install normcap\npip install normcap\n\n# Run\n./normcap\n```\n\n#### On Windows\n\n1\\. Install `Tesseract 5` by using the\n[installer provided by UB Mannheim](https://github.com/UB-Mannheim/tesseract/wiki).\n\n2\\. Identify the path to the Tesseract base folder. It should contain a `/tessdata` subfolder\nand the `tesseract.exe` binary. Depending on whether you installed Tesseract system-wide or\nin userspace, the base folder should be:\n\n```\nC:\\Program Files\\Tesseract-OCR\n```\n\nor\n\n```\nC:\\Users\\<USERNAME>\\AppData\\Local\\Programs\\Tesseract-OCR\n```\n\n3\\. Adjust environment variables:\n\n- Create an environment variable `TESSDATA_PREFIX` and set it to _your_ Tesseract base\n folder, e.g.: \"System Properties\" \u2192 Tab \"Advanced\" \u2192 \"Environment Variables \u2026\" \u2192\n \"New \u2026\" \u2192 Variable: `TESSDATA_PREFIX`, Value: `\"C:\\Program Files\\Tesseract-OCR\"`\n\n- Append Tesseract's base folder to the environment variable `PATH`, e.g.: \"System\n Properties\" \u2192 Tab \"Advanced\" \u2192 \"Environment Variables \u2026\" \u2192 Section \"User variables\"\n \u2192 Select `PATH` \u2192 \"Edit \u2026\" \u2192 Add a new entry `\"C:\\Program Files\\Tesseract-OCR\"`\n\n- To test your setup, open a new `cmd`-terminal and run:\n\n ```cmd\n tesseract --list-langs\n ```\n\n4\\. Install and run NormCap:\n\n```bash\n# Install normcap\npip install normcap\n\n# Run\nnormcap\n```\n\n## Development\n\nPrerequisites for setting up a development environment:\n[**Python >=3.9**](https://www.python.org/downloads/),\n[**uv**](https://docs.astral.sh/uv/getting-started/installation/), and\n[**Tesseract >=5.0**](https://tesseract-ocr.github.io/tessdoc/#5xx) (including **language\ndata**).\n\n```sh\n# Clone repository\ngit clone https://github.com/dynobo/normcap.git\n\n# Change into project directory\ncd normcap\n\n# Create virtual env and install dependencies\nuv sync\n\n# Register pre-commit hook\nuv run pre-commit install\n\n# Run NormCap in virtual env\nuv run python -m normcap\n```\n\n## Contribute to UI translations\n\nPlease use [Weblate](https://hosted.weblate.org/projects/normcap/ui/) to complement or\ncorrect text for existing languages as well as for adding new languages.\n\n(If you prefer not to use Weblate, you can also [do it manually](./normcap/resources/locales/README.md), but be aware that this is more cumbersome.)\n\n## Credits\n\nThis project uses the following non-standard libraries:\n\n- [pyside6](https://pypi.org/project/PySide6/) - _bindings for Qt UI Framework_\n\nAnd it depends on external software:\n\n- [tesseract](https://github.com/tesseract-ocr/tesseract) - _OCR engine_\n- [zxing-cpp](https://github.com/zxing-cpp/zxing-cpp) - _QR & barcode detection_\n- [wl-clipboard](https://github.com/bugaevc/wl-clipboard) - _Wayland clipboard\n utilities_\n- [xclip](https://github.com/astrand/xclip) - _CLI to the X11 clipboard_\n\nPackaging is done with:\n\n- [briefcase](https://pypi.org/project/briefcase/) - _converting Python projects into\n standalone apps_\n\nThanks to the maintainers of those nice tools!\n\n## Similar open source tools\n\nIf NormCap doesn't fit your needs, try these alternatives (no particular order):\n\n- [TextSnatcher](https://github.com/RajSolai/TextSnatcher) (Linux)\n- [GreenShot](https://getgreenshot.org/) (Windows, macOS)\n- [TextShot](https://github.com/ianzhao05/textshot) (Windows)\n- [gImageReader](https://github.com/manisandro/gImageReader) (Linux, Windows)\n- [Capture2Text](https://sourceforge.net/projects/capture2text) (Windows)\n- [Frog](https://github.com/TenderOwl/Frog) (Linux)\n- [Textinator](https://github.com/RhetTbull/textinator) (macOS)\n- [Text-Grab](https://github.com/TheJoeFin/Text-Grab) (Windows)\n- [dpScreenOCR](https://danpla.github.io/dpscreenocr/) (Linux, Windows)\n- [PowerToys Text Extractor](https://learn.microsoft.com/en-us/windows/powertoys/text-extractor)\n (Windows)\n\n## Why \"NormCap\"?\n\nSee [XKCD](https://xkcd.com):\n\n[](https://xkcd.com/2116/)\n\n\n## Certification\n\n\n\n## Contributors\n\n<a href=\"https://github.com/dynobo/normcap/graphs/contributors\">\n <img src=\"https://contrib.rocks/image?repo=dynobo/normcap\" />\n</a>\n\n<small>Made with [contrib.rocks](https://contrib.rocks)</small>\n",
"bugtrack_url": null,
"license": "NormCap: OCR-powered screen-capture tool to capture information instead of images\n Copyright (C) 2021 dynobo\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see <http://www.gnu.org/licenses/>.",
"summary": "OCR-powered screen-capture tool to capture information instead of images.",
"version": "0.6.0",
"project_urls": {
"BuyMeACoffee": "https://www.buymeacoffee.com/dynobo",
"Changelog": "https://github.com/dynobo/normcap/blob/main/CHANGELOG",
"FAQs": "https://dynobo.github.io/normcap/#faqs",
"Homepage": "https://dynobo.github.io/normcap/",
"Issues": "https://github.com/dynobo/normcap/issues",
"Source Code": "https://github.com/dynobo/normcap"
},
"split_keywords": [
"capture",
" clipboard",
" ocr",
" screenshot"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "858ec14eac02ed01a07100d29997e4187024bbb6b95d3c2201d15839881b798d",
"md5": "c207d0bb900ae6639b201a6f952e16fb",
"sha256": "6c3e82b538dab1554bb4c8a92d92177b90b828e303eb94dab5f0ff6bd47160b3"
},
"downloads": -1,
"filename": "normcap-0.6.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c207d0bb900ae6639b201a6f952e16fb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 3935590,
"upload_time": "2025-08-31T18:16:05",
"upload_time_iso_8601": "2025-08-31T18:16:05.830926Z",
"url": "https://files.pythonhosted.org/packages/85/8e/c14eac02ed01a07100d29997e4187024bbb6b95d3c2201d15839881b798d/normcap-0.6.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ce74eee5d3ec97f8d46fa7c48ac303aeca006ba2cebd95d0a01e45f62beeec41",
"md5": "30aada0dbc3857089f737d73a1d06573",
"sha256": "851dd22f0430b06255777bbd1232861a03bd85abfae3708f92124a8a5ad2cf9f"
},
"downloads": -1,
"filename": "normcap-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "30aada0dbc3857089f737d73a1d06573",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 5717607,
"upload_time": "2025-08-31T18:16:07",
"upload_time_iso_8601": "2025-08-31T18:16:07.786336Z",
"url": "https://files.pythonhosted.org/packages/ce/74/eee5d3ec97f8d46fa7c48ac303aeca006ba2cebd95d0a01e45f62beeec41/normcap-0.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-31 18:16:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dynobo",
"github_project": "normcap",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "normcap"
}