{"id":13478762,"url":"https://github.com/dynobo/normcap","last_synced_at":"2025-05-13T19:14:56.268Z","repository":{"id":35421886,"uuid":"202401693","full_name":"dynobo/normcap","owner":"dynobo","description":"OCR powered screen-capture tool to capture information instead of images","archived":false,"fork":false,"pushed_at":"2025-05-13T09:00:42.000Z","size":152310,"stargazers_count":2142,"open_issues_count":56,"forks_count":100,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-05-13T09:39:52.276Z","etag":null,"topics":["multiplatform","ocr","python","screenshot","tesserocr","tool"],"latest_commit_sha":null,"homepage":"https://dynobo.github.io/normcap/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dynobo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-08-14T18:07:03.000Z","updated_at":"2025-05-13T09:27:06.000Z","dependencies_parsed_at":"2023-09-22T05:50:42.591Z","dependency_job_id":"8b84a6f9-fcdd-4ea9-90ec-27476aa65d4f","html_url":"https://github.com/dynobo/normcap","commit_stats":{"total_commits":1082,"total_committers":8,"mean_commits":135.25,"dds":"0.10905730129390023","last_synced_commit":"8ec4d2bbc907c07cda01a55c22468623a5912565"},"previous_names":[],"tags_count":65,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynobo%2Fnormcap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynobo%2Fnormcap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynobo%2Fnormcap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynobo%2Fnormcap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dynobo","download_url":"https://codeload.github.com/dynobo/normcap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253919021,"owners_count":21984251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["multiplatform","ocr","python","screenshot","tesserocr","tool"],"created_at":"2024-07-31T16:02:02.418Z","updated_at":"2025-05-13T19:14:51.253Z","avatar_url":"https://github.com/dynobo.png","language":"Python","readme":"\u003c!-- markdownlint-disable MD013 MD026 MD033 --\u003e\n\n# NormCap\n\n**_OCR powered screen-capture tool to capture information instead of images. For Linux,\nmacOS and Windows._**\n\n[![Test](https://img.shields.io/github/actions/workflow/status/dynobo/normcap/cicd.yaml?label=CI/CD\u0026branch=main)](https://github.com/dynobo/normcap/actions/workflows/cicd.yaml)\n[![Coverage Status](https://img.shields.io/coverallsCoverage/github/dynobo/normcap?label=Coverage\u0026branch=main)](https://coveralls.io/github/dynobo/normcap)\n[![CodeQL](https://img.shields.io/github/actions/workflow/status/dynobo/normcap/cicd.yaml?label=CodeQL\u0026branch=main)](https://github.com/dynobo/normcap/security/code-scanning/tools/CodeQL/status/)\n\n[![GitHub](https://img.shields.io/github/downloads/dynobo/normcap/total?label=Github%20downloads\u0026color=blue)](https://hanadigital.github.io/grev/?user=dynobo\u0026repo=normcap)\n[![PyPi](https://img.shields.io/pypi/dm/normcap?label=PyPi%20downloads\u0026color=blue)](https://pypi.org/project/normcap)\n[![Flathub](https://img.shields.io/flathub/downloads/com.github.dynobo.normcap?label=Flathub%20downloads\u0026color=blue)](https://flathub.org/apps/details/com.github.dynobo.normcap)\n[![AUR](https://img.shields.io/aur/votes/normcap?label=AUR%20votes\u0026color=blue)](https://aur.archlinux.org/packages/normcap)\n\n\u003ca href=\"https://www.buymeacoffee.com/dynobo\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 40px !important;\" \u003e\u003c/a\u003e\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[![Screencast](https://user-images.githubusercontent.com/11071876/189767585-8bc45c18-8392-411d-84dc-cef1cb5dbc47.gif)](https://raw.githubusercontent.com/dynobo/normcap/main/assets/normcap.gif)\n\n## Quickstart\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.5.9-x86_64-Windows.msi](https://github.com/dynobo/normcap/releases/download/v0.5.9/NormCap-0.5.9-x86_64-Windows.msi)\n  (Installer)\n- [NormCap-0.5.9-x86_64-Windows.zip](https://github.com/dynobo/normcap/releases/download/v0.5.9/NormCap-0.5.9-x86_64-Windows.zip)\n  (Portable)\n\n#### Linux\n- [NormCap-0.5.9-x86_64.AppImage](https://github.com/dynobo/normcap/releases/download/v0.5.9/NormCap-0.5.9-x86_64.AppImage)\n  (Binary, requires [fuse](https://dynobo.github.io/normcap/faqs/#linux-appimage-error-appimages-require-fuse-to-run))\n- [com.github.dynobo.normcap @ FlatHub](https://flathub.org/apps/details/com.github.dynobo.normcap)\n  (FlatPak)\n- [`normcap` @ AUR](https://aur.archlinux.org/packages/normcap) (Arch/Manjaro)\n\n#### macOS\n\nNote: You have to allow the unsigned application on first start: \"System Preferences\" →\n\"Security \u0026 Privacy\" → \"General\" → \"Open anyway\". You also have to allow NormCap to take\nscreenshots. ([#135](https://github.com/dynobo/normcap/issues/135))\n\n- [NormCap-0.5.9-x86_64-macOS.dmg](https://github.com/dynobo/normcap/releases/download/v0.5.9/NormCap-0.5.9-x86_64-macOS.dmg)\n  (Installer for x86/64)\n- [NormCap-0.5.9-arm64-macOS.dmg](https://github.com/dynobo/normcap/releases/download/v0.5.9/NormCap-0.5.9-arm64-macOS.dmg)\n  (Installer for M1)\n\n## Install Python package\n\nAs an _alternative_ to a prebuilt package from above you can install the\n[NormCap Python package](https://pypi.org/project/normcap/) for **Python \u003e=3.9**, but it\nis a bit more complicated:\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 Tesseract base folder. It should contain a `/tessdata` subfolder\nand the `tesseract.exe` binary. Depending on if 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\\\u003cUSERNAME\u003e\\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\" → Tab \"Advanced\" → \"Environment Variables...\" →\n  \"New...\" → 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\" → Tab \"Advanced\" → \"Environment Variables...\" → Section \"User variables\"\n  → Select `PATH` → \"Edit...\" → 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## Why \"NormCap\"?\n\nSee [XKCD](https://xkcd.com):\n\n[![Comic](https://imgs.xkcd.com/comics/norm_normal_file_format.png)](https://xkcd.com/2116/)\n\n## Development\n\nPrerequisites for setting up a development environment are:\n[**Python \u003e=3.9**](https://www.python.org/downloads/),\n[**uv**](https://docs.astral.sh/uv/getting-started/installation/) and\n[**Tesseract \u003e=5.0**](https://tesseract-ocr.github.io/tessdoc/#5xx) (incl. **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 venv\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 language as well as for adding new languages.\n\n(If you prefer to not use Weblate, you can also [do it manually](./normcap/resources/locales/README.md), but be aware, that this 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- [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 those alternatives (no particular order):\n\n- [TextSnatcher](https://github.com/RajSolai/TextSnatcher) (Linux)\n- [GreenShot](https://getgreenshot.org/) (Linux, 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## Certification\n\n![WOMM](https://raw.githubusercontent.com/dynobo/lmdiag/master/badge.png)\n\n## Contributors\n\n\u003ca href=\"https://github.com/dynobo/normcap/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=dynobo/normcap\" /\u003e\n\u003c/a\u003e\n\n\u003csmall\u003eMade with [contrib.rocks](https://contrib.rocks)\u003c/small\u003e\n","funding_links":["https://www.buymeacoffee.com/dynobo"],"categories":["Python","光学字符识别OCR"],"sub_categories":["资源传输下载"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynobo%2Fnormcap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdynobo%2Fnormcap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynobo%2Fnormcap/lists"}