NormCap v0.3.1

OCR -powered screenshot tool to capture text instead of images.

Packages with the latest changes for your system:

... or install the Python package instead.

Features

Characteristics and functionalities that make NormCap interesting.

Free & Open Source
Cross platform
Multi monitor
Many languages
System tray
Heuristic parsing

Usage

A short guide for using NormCap and its most important features.

Quickstart

  1. Start NormCap and wait until a pink border appears.
  2. Select a region on screen with your mouse.
  3. Paste the recognized text from the clipboard anywhere you like.

User Interface

Capture Modes

The settings menu allows switching between the two capture modes: "parse" and "raw":

Support

When things did not went as expected.

You need support with NormCap?
You want to support NormCap?
Not at all satisfied with NormCap?

Try an alternative applications and see if they work better for you.

Frequently Asked Questions

A knowledge base for common issues and additional information.

General

How can I add additional languages to NormCap?

The prebuild packages are shipped with the following languages English, Arabic, Chinese, German, Spanish and Russian. If you miss a language, click the settings icon and "open data folder..." (in the "Languages" section), then follow the instructions in the file add_more_languages.txt.

If you installed NormCap as Python package, refer to the online documentation on how to install additional language for Tesseract on your system.

How can I improve the detection accuracy?

The most import thing is to specify the correct language(s) (via settings menu or the --language command line argument). Keep in mind: selecting multiple languages at once slows down the recognition a bit.

Sometimes Tesseract struggles with recognizing text with just very view characters, like a single word. In this case try selecting a larger portion of text.

The pre-build NormCap packages are shipped with the tessdata-fast models, which offer a very good accuracy to speed compromise. But you can also try to add the models from tessdata or tessdata-best instead as described above.

If the results are still bad, please submit a screenshot of the text your are trying to recognize as an issue.

Is my image/text analyzed in "the cloud"?

No. The text recognition is performed offline using the OCR framework Tesseract.

Is any other data send to the internet?

No telemetry data is collected and by default also no other data is send anywhere.

However, some (optional) features require accessing resources on the web and therefore expose minimal information (like IP address) to the accessed server:

  • If you enable the check for updates on start, the application checks NormCap's releases page on github.com.
  • If you download additional languages, they are fetched beeing from github.com, too.
Can I start NormCap via a keyboard shortcut?

Yes, but you'll have to configure it on your own using your operating system's tools:

Ask your preferred search engine for support or different ways to do this.

Are there alternatives to NormCap?

Some applications offer similar features like NormCap and might be a good or even better alternative for you: It completely depends on your use case and requirements. Some similar OpenSource Projects are:

[Windows] How can I start NormCap with a command line argument?

To run NormCap with an argument once, run it in the "Terminal":

C:\Users\<USER-NAME>\AppData\Local\Programs\NormCap\python\python.exe -m normcap --help
[MacOS] How can I start NormCap with a command line argument?

To run NormCap with an argument once, run it in the "Terminal":

$ /Applications/NormCap.app/Contents/MacOS/NormCap --help

To create a launcher with command line arguments, launch the "Script Editor" and make a new script with the desired command line arguments, e.g.:

do shell script "exec /Applications/NormCap.app/Contents/MacOS/NormCap --tray"s

Save the script as type "Application" in the folder "/Applications"
(When this new Application is started, an additional Icon will show up in the Dock. If you know a way to avoid this, please open an issue)

Troubleshooting

NormCap is not starting

Please try to start again with the -v debug option. This should reveal more information useful for problem solving.

[Linux] Could not load the Qt platform plugin xcb

In case you get the following output...

$ normcap -v debug
12:06:34 - INFO    - normcap.app            - L:32  - Starting Normcap v0.2.0
12:06:34 - DEBUG   - normcap.utils          - L:199 - [QT] L:0, func: None, file: None
12:06:34 - DEBUG   - normcap.utils          - L:200 - [QT] QtInfoMsg - Could not load the Qt platform plugin "xcb" in "" even though it was found.
12:06:34 - DEBUG   - normcap.utils          - L:199 - [QT] L:0, func: None, file: None
12:06:34 - DEBUG   - normcap.utils          - L:200 - [QT] QtFatalMsg - This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.

... the chances are, some system requirements are outdated. You can check this with apt list "libxcb-util*":

$ apt list "libxcb-util*"
Listing... Done
libxcb-util-dev/hirsute 0.4.0-1 amd64
libxcb-util-dev/hirsute 0.4.0-1 i386
libxcb-util0-dev/hirsute 0.4.0-1 amd64
libxcb-util0-dev/hirsute 0.4.0-1 i386
libxcb-util1/hirsute,now 0.4.0-1 amd64 [installed,automatic]
libxcb-util1/hirsute 0.4.0-1 i386

Is only libxcb-util0 shown but libxcb-util1 is missing? Then you can try to create a symlink for the missing version:

sudo ln -s /lib/x86_64-linux-gnu/libxcb-util.so.0 /lib/x86_64-linux-gnu/libxcb-util.so.1
[Linux] Normcap does not show up in system tray

Is your display environment Gnome Shell? Then you probably need to install a Gnome Shell extension to support showing applications in the top bar, e.g.:

[Linux] Normcap doesn't show a notification after capture

NormCap's notifcations depend on the system tray functionality. Try running normcap with the --tray flag, and if nothing is shown in the system tray, proceed like in the question above.

Development

"No such file or directory" error when running briefcase build

To verify, if this is the issue you are facing, run te build docker interactively and try to run the linuxdeploy-*.AppImage file there:

$ docker run -it \
  --volume /home/<USER>/<PROJECT PATH>/normcap/linux:/app:z \
  --volume /home/<USER>/.briefcase:/home/brutus/.briefcase:z \
  --env VERSION=0.2.0 briefcase/eu.dynobo.normcap:py3.9 \
  /bin/bash
$ /home/brutus/.briefcase/tools/linuxdeploy-x86_64.AppImage

If that results in a `No such file or directory` error, according to this issue and this one a workaround is to correct the "magic" bytes of the AppImage. This worked for me:

sed '0,/AI\x02/{s|AI\x02|\x00\x00\x00|}' -i linuxdeploy-x86_64.AppImage

Python package

An advanced installation method as alternative to the prebuild packages.

Comparision to prebuild packages

Prebuild:

  • Easier to install
  • Better system integration
  • No admin rights required

Python package:

  • Slightly faster startup
  • Might need less disk space
Install on Linux
  1. Install dependencies:
    • Ubuntu/Debian:
      sudo apt install tesseract-ocr tesseract-ocr-eng
    • Arch:
      sudo pacman -S tesseract tesseract-data-eng
    • Fedora:
      sudo dnf install tesseract tesseract-devel
  2. Install NormCap:
    pip install normcap
  3. Run:
    ./normcap
Install on MacOS
  1. Install dependencies:
    brew install tesseract tesseract-lang
  2. Install NormCap:
    pip install normcap
  3. Run:
    ./normcap
Install on Windows
  1. Install "Tesseract 5", e.g. by using the installer provided by UB Mannheim.
  2. Set the environment variable TESSDATA_PREFIX to Tesseract's data folder, e.g.:
    setx TESSDATA_PREFIX "C:\Program Files\Tesseract-OCR\tessdata"
  3. Append Tesseract's location to the environment variable "Path", e.g.:
    setx Path "%Path%;C:\Program Files\Tesseract-OCR"
  4. Make sure to close and reopen your current terminal window to apply the new variables. Test it by running:
    tesseract --list-langs
  5. Install NormCap:
    pip install normcap
  6. Run:
    ./normcap