NormCap v0.3.15

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

Packages with the latest changes for your system:

... alternatively use FlatHub, AUR or install the Python package.

Features

Characteristics and functionalities that make NormCap interesting.

Many languages
Works offline
Heuristic parsing
Multi monitor
Cross-platform
Free & Open Source

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. Wait for notification or pink tray icon.
  4. Paste the recognized text from the clipboard anywhere you like.

Example use-cases

User Interface

Capture Modes

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

Support

When things did not go as expected.

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

Try an alternative application 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 few characters, like a single word. In this case try selecting a larger portion of text.

The prebuild 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 you 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 sent 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.
  • If you download additional languages, they are being fetched from GitHub, 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 open-source Projects are:

[macOS] Does NormCap work on the M1 architecture?

The prebuild package won't work, install the Python package instead.

Why?

  1. A prebuild package can only run on the CPU architecture on which it was build. NormCap uses GitHub actions for the automated build process, which currently does not offer a runner with an M1 architecture.
  2. The developer of NormCap doesn't have a Mac, and the M1 can't be emulated via a virtual machine. Therefore, testing and debugging such a build would not be feasible.

Troubleshooting

How to get debug information?
  • With Python package:

    Run: normcap -v debug

  • On Windows (msi):

    Run: %LOCALAPPDATA%\Programs\dynobo\NormCap\NormCap.exe -- -v debug

  • On macOS (dmg):

    Run: $ /Applications/NormCap.app/Contents/MacOS/NormCap -v debug

  • On Linux (AppImage):

    Run: $ NormCap-{version}-x86_64.AppImage -v debug

  • On Linux (FlatPak):

    Run: $ flatpak run --command=normcap com.github.dynobo.normcap -v debug

  • On Linux (AUR):

    Run: $ normcap -v debug

NormCap is not starting

Please try to take a look at the debug information. It might provide enough information for you to solve the issue for yourself. If it doesn't help you, don't hesitate to report your problem description together with debug information.

[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 notifications 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.

[Linux] AppImages require FUSE to run

This is not a NormCap issue but a requirement for AppImages. You need to make sure, that the FUSE library is installed on your system. E.g. on Ubuntu 22.04 you need to run sudo apt install libfuse2. See this blog post for details.

[macOS] When NormCap is started, an empty desktop shows up

This issue ususally occures on the after installing NormCap, either for the first time or after an update.

This is a known issue related to macOS's permissions settings: If NormCap doesn't have the system's permission to take a screenshot, an empty desktop will be shown.
(To be precise: NormCap doesn't know that it lacks permissions, tries to take a screenshot nevertheless, which results in a screenshot of the empty desktop.)

Steps to solve this:

  1. Close NormCap, if it is running.
  2. Navigate to "System Preferences" → "Security & Privacy" → "Privacy" → "Screen Recording" → "Click unlock".
  3. Do you already see "NormCap" on the right side? If yes, "remove" [ – ] it. Un-ticking the checkbox is not enough!
  4. Click "add" [+] → "Applications" → "NormCap".
  5. Confirm that you see NormCap on the right side with a checkmark in front of it.
  6. Start NormCap, it should work now.
  7. You might need to repeat those steps after installing a new version of NormCap.

Hopefully, this cumbersome user experience can be improved in a future release.

Development

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

To verify, if this is the issue you are facing, run the docker image 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.

Comparison to prebuild packages

Prebuild:

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

Python package:

  • Slightly faster startup
  • Requires an installation of Python >=3.9
  • Might need less disk space
Install on Linux
  1. Install dependencies:
    Note: wl-clipboard can be omitted on X11 based systems

    • Ubuntu/Debian:
      sudo apt install build-essential tesseract-ocr tesseract-ocr-eng
                          libtesseract-dev libleptonica-dev wl-clipboard
    • Arch:
      sudo pacman -S tesseract tesseract-data-eng wl-clipboard
    • Fedora:
      sudo dnf install tesseract wl-clipboard
    • openSUSE:
      sudo zypper install python3-devel tesseract-ocr
                          tesseract-ocr-devel wl-clipboard
  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