diff --git a/README.md b/README.md index a84b2aa..737ca15 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # OCR4Linux -OCR4Linux is a tool that allows you to take a screenshot of a selected area, extract the text from the image, and copy it to the clipboard. It supports both Wayland and X11 sessions and uses various tools to achieve its functionality. -Note: This script is currently only made for Arch Linux. It may work on other arch-based distributions, but it has not been tested yet. +OCR4Linux is a versatile text extraction tool that allows you to take a screenshot of a selected area, extract text using OCR, and copy it to the clipboard. It supports both Wayland and X11 sessions and offers multiple language support. + +**Note:** This script is currently only made for Arch Linux. It may work on other arch-based distributions, but it has not been tested yet. ## Motivation @@ -9,22 +10,61 @@ I didn't find any easy tool in Linux that does the same thing as the PowerTool a ## Features -- Takes screenshots using `grimblast` for Wayland and `scrot` for X11. -- Uses a pytesseract python script to preprocess the image and extract text. -- Copies the extracted text to the clipboard using `wl-copy` and `cliphist` for Wayland and `xclip` for X11. +- **Screenshot Capture** + + - Wayland support via `grimblast` + - X11 support via `scrot` + - Configurable screenshot directory + +- **Text Extraction** + + - Automatic language detection + - Multi-language OCR support + - Image preprocessing for better accuracy + - UTF-8 text output + +- **Clipboard Integration** + + - Wayland: `wl-copy` and `cliphist` + - X11: `xclip` + +- **Additional Features** + - Optional screenshot retention + - Comprehensive logging system + - Command-line interface ## Requirements -The following packages are required to be installed: +### System Requirements -- `python` - - `python-numpy` - - `python-pillow` - - `python-pytesseract` - - `python-opencv` -- `tesseract` -- `grimblast` for `wayland` or `scrot` for `x11` -- `wl-copy` and `cliphist` for `wayland` or `xclip` for `x11` +- Arch Linux or arch-based distribution +- Python 3.x +- `yay` package manager (will be installed if needed) +- `tesseract` OCR engine +- `tesseract-data-eng` English language pack +- `tesseract-data-ara` Arabic language pack +- If you need any other language other than the above two, search for it using the command: + + ```sh + sudo pacman -Ss tesseract-data-{lang} + ``` + +### Python Dependencies + +- `python-pillow` +- `python-pytesseract` + +### Session-Specific Requirements + +- Wayland: + - `grimblast-git` + - `wl-clipboard` + - `cliphist` + - `rofi-wayland` +- X11: + - `scrot` + - `xclip` + - `rofi` ## Installation @@ -53,28 +93,82 @@ The following packages are required to be installed: 2. The script will take a screenshot of the selected area, extract the text from the image, and copy it to the clipboard. +### Command Line Arguments + +--- + +#### OCR4Linux.sh + +| Option | Description | Default | +| -------- | ---------------------------------- | ---------------------------- | +| `-r` | Remove screenshot after processing | `false` | +| `-d DIR` | Set screenshot directory | `$HOME/Pictures/screenshots` | +| `-l` | Keep logs | `false` | +| `-h` | Show help message | - | + +#### OCR4Linux.py + +| Option | Description | Required | +| ------------------ | ---------------------------- | -------- | +| `image_path` | Path to input image | Yes | +| `output_path` | Path to save extracted text | Yes | +| `-l, --list-langs` | List available OCR languages | No | +| `-h, --help` | Show help message | No | + +### Examples + +--- + +#### Using OCR4Linux.sh + +```sh +# Basic usage +./OCR4Linux.sh + +# Save logs and remove screenshot after processing +./OCR4Linux.sh -l -r + +# Custom screenshot directory with logging +./OCR4Linux.sh -d ~/Documents/screenshots -l + +# Show help +./OCR4Linux.sh -h +``` + +#### Using OCR4Linux.py + +```sh +# Basic usage +python OCR4Linux.py input.png output.txt + +# List available languages +python OCR4Linux.py --list-langs + +# Show help +python OCR4Linux.py --help +``` + ## Tips -- You can customize the script to suit your needs by changing the screenshot tool, text extraction method, or clipboard manager. - You can create a keyboard shortcut to run the script for easy access. ### Example for `Hyprland` users: - put the following lines in your `hyprland.conf` file: - ``` + ```conf $OCR4Linux = ~/.config/OCR4Linux/OCR4Linux.sh bind = $mainMod SHIFT, E, exec, $OCR4Linux # OCR4Linux script ``` ### Example for `dwm` users: - put the following lines in your `config.h` file: - ``` + ```c static const char *ocr4linux[] = { "sh", "-c", "~/.config/OCR4Linux/OCR4Linux.sh", NULL }; - { MODKEY | ShiftMask, XK_e, spawn, {.v = ocr4linux } }, // OCR4Linux script + { MODKEY | ShiftMask, XK_e, spawn, {.v = ocr4linux } }, // OCR4Linux script ``` ## Files - [OCR4Linux.py](https://github.com/moheladwy/OCR4Linux/blob/main/OCR4Linux.py): Python script to preprocess the image and extract text using `tesseract`. -- [OCR4Linux.sh](https://github.com/moheladwy/OCR4Linux/blob/main/OCR4Linux.sh): Shell script to take a screenshot, extract text, and copy it to the clipboard. -- [setup.sh](https://github.com/moheladwy/OCR4Linux/blob/main/setup.sh): Shell script to install the required packages and copy the necessary files to the configuration directory. +- [OCR4Linux.sh](https://github.com/moheladwy/OCR4Linux/blob/main/OCR4Linux.sh): Shell script to take a screenshot, pass it to the python script, get the extracted text from the python script, and copy it to the clipboard. +- [setup.sh](https://github.com/moheladwy/OCR4Linux/blob/main/setup.sh): Shell script to install the required packages and copy the necessary files to the configuration directory (run this script the first time you clone the repository only). ## Contributing