{"id":24758534,"url":"https://github.com/furqanhun/textnomnom-py","last_synced_at":"2026-04-30T20:32:48.727Z","repository":{"id":273365479,"uuid":"919468523","full_name":"FurqanHun/textnomnom-py","owner":"FurqanHun","description":"Extract text from PDFs, PPTs, \u0026 URLs (with OCR support). Converts PPT to PDF \u0026 handles files or folders. 🦍","archived":false,"fork":false,"pushed_at":"2025-02-06T19:36:06.000Z","size":48,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-06T19:41:35.309Z","etag":null,"topics":["automated-conversion","automation","cross-platform","document-conversion","image-text-extraction","linux","pdf-processing","pdf-to-text","ppt","ppt-to-text","pptx","pptx-to-text","text-extraction","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FurqanHun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-20T12:54:09.000Z","updated_at":"2025-02-06T19:36:09.000Z","dependencies_parsed_at":"2025-01-27T16:35:02.443Z","dependency_job_id":null,"html_url":"https://github.com/FurqanHun/textnomnom-py","commit_stats":null,"previous_names":["furqanhun/text-extract-py"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurqanHun%2Ftextnomnom-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurqanHun%2Ftextnomnom-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurqanHun%2Ftextnomnom-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurqanHun%2Ftextnomnom-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FurqanHun","download_url":"https://codeload.github.com/FurqanHun/textnomnom-py/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245084610,"owners_count":20558248,"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":["automated-conversion","automation","cross-platform","document-conversion","image-text-extraction","linux","pdf-processing","pdf-to-text","ppt","ppt-to-text","pptx","pptx-to-text","text-extraction","windows"],"created_at":"2025-01-28T16:21:00.994Z","updated_at":"2026-04-30T20:32:48.722Z","avatar_url":"https://github.com/FurqanHun.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TextNomNom v2.0\n\n[![Version](https://img.shields.io/badge/version-2.1.0-blue.svg)](https://github.com/FurqanHun/textnomnom-py)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n**TextNomNom** is a versatile, cross-platform tool for extracting text from various file formats. It features a powerful command-line interface and a user-friendly interactive menu, with a self-contained environment that handles all Python dependencies automatically.\n\n---\n\n## Table of Contents\n* [Features](#features)\n* [Installation \u0026 Setup](#installation--setup)\n* [External Dependencies](#external-dependencies-manual-install)\n* [Usage](#usage)\n  * [Interactive Mode](#interactive-mode)\n  * [Command-Line Mode](#command-line-cli-mode)\n* [Configuration](#configuration)\n* [CLI Options](#cli-options)\n* [License](#license)\n---\n\n### Features\n\n* **Self-Contained Environment:** No more manual `pip install`. The launcher script automatically creates a virtual environment and installs all required Python packages on the first run.\n* **Dual Mode Operation:**\n    * **Interactive Menu:** Run without arguments to launch a user-friendly, step-by-step menu.\n    * **Powerful CLI:** Use command-line arguments for scripting and automation.\n* **Multi-Format Support:** Extracts text from PDFs, modern PowerPoint (`.pptx`), legacy PowerPoint (`.ppt`), and common image formats (JPG, PNG, etc.).\n* **Real-Time Progress Bar:** A dynamic progress bar shows the status when processing directories, updating for every page/slide processed.\n* **Web Scraping:** Provide a URL to scrape its text content into a clean Markdown file.\n* **Conversion:** Converts PPT and PPTX into PDF. Bulk conversion (full directory) is also supported.\n* **Advanced OCR:** Can perform OCR on images within PDFs and PowerPoint slides to capture text from all sources.\n* **Cross-Platform \u0026 Configurable:** Works on Linux, macOS, and Windows. A central config file allows for easy customization of driver paths and other settings.\n\n---\n\n### Installation \u0026 Setup\n\nGetting started is designed to be as simple as possible.\n\n1.  **Clone the Repository:**\n    ```bash\n    git clone https://github.com/FurqanHun/textnomnom-py.git\n    cd textnomnom-py\n    ```\n\n2.  **(For Linux/macOS)** Make the launcher executable:\n    ```bash\n    chmod +x textnomnom\n    ```\n\n3.  **Run it!**\n    ```bash\n    ./textnomnom\n    ```\n    The first time you run the script, it will automatically create its virtual environment and install all necessary Python libraries. Subsequent runs will be instant. You can run it with `--config` to modify the PATHS. `--config` or `--version` both run in stage 1, before the launcher checks/sets up the virtual environment.\n\n---\n\n### External Dependencies (Manual Install)\n\nFor certain features, you still need to install system-level tools. The script may run without them, but the features might be limited.\n\n* **For OCR (`--ocr`, `--ocr-mix`):** You need **Tesseract**.\n    * **Fedora/CentOS:** `sudo dnf install tesseract`\n    * **Debian/Ubuntu:** `sudo apt-get install tesseract-ocr`\n    * **Windows/macOS:** Install from the [official Tesseract repository](https://github.com/tesseract-ocr/tesseract).\n\n* **For PDF-to-Image Conversion (used by OCR):** You need **Poppler**.\n    * **Fedora/CentOS:** `sudo dnf install poppler-utils`\n    * **Debian/Ubuntu:** `sudo apt-get install poppler-utils`\n    * **Windows:** Download and install from [this Poppler for Windows repo](https://github.com/oschwartz10612/poppler-windows/releases).\n\n* **For `.ppt` to `.pptx` Conversion (Linux only):** You need **LibreOffice**.\n    * This is included by default on many Linux distributions. If not, install it with your package manager (e.g., `sudo dnf install libreoffice`).\n\n---\n\n### Usage\n\nYou can run the application in two modes.\n\n#### Interactive Mode\nSimply run the command without any arguments to launch a guided menu.\n\n```bash\n./textnomnom\n```\n\n#### Command-Line (CLI) Mode\nProvide a path or other arguments to run directly from the command line.\n\n```bash\n# Process a directory and save all text to one file with OCR\n./textnomnom /path/to/my_docs -a --ocr-mix\n\n# Scrape a website\n./textnomnom https://example.com\n\n# Get the version number instantly\n./textnomnom --version\n```\n\n---\n### Configuration\nTo open the configuration file in your default editor, run:\n``` bash\n./textnomnom --config\n```\nOR\n``` bash\n./textnomnom --config=EDITOR\n```\nWhere `EDITOR` is the name of your preferred editor.\n\nFollowing is the Default Configuration File:\n``` py\n# app/config_manager.py\n\n# --- Optional ---\n# Define the path for the virtual environment.\n# If set to None or not defined, it defaults to a 'venv' folder in the project root.\nVENV_PATH = \"venv\"\n\n# If you have installed drivers, update paths here. Use \"\" or None.\nGECKO_DRIVER_PATH = None\nCHROME_DRIVER_PATH = None\n\nCHROMIUM_BASED_BROWSER_PATH = None\nFIREFOX_BASED_BROWSER_PATH = None\n\n# --- Optional ---\n# Define the directory where logs will be stored.\n# If this is not set, it will default to a 'logs/' folder.\nLOG_DIRECTORY = \"logs\"\n\n# --- Optional ---\n# Set to True to enable logging to a file without console output.\n# The --debug flag will override this and log to both file and console.\nLOGS = False\n\n# --- Optional ---\n# Define where scraped web content will be saved.\n# If this is set to None or is not defined, it will default to your system's Downloads folder.\nSCRAPED_FILES_DIR = None\n\n```\n---\n\n### CLI Options\n\n| Argument                  | Description                                                                 |\n| ------------------------- | --------------------------------------------------------------------------- |\n| `path`                    | Path to a file, directory, or a URL to process.                             |\n| `-a`, `--save-all`        | Combine all extracted text from a directory into a single file.             |\n| `--ocr`                   | Force OCR on image files.                                                   |\n| `--ocr-mix`               | Extract both standard text and OCR text from PDFs and PPTX files.           |\n| `--convert PDF`           | Converts the PPT and PPTX into PDF (Supports directories)                   |\n| `--clear-log`             | Clears the content of the log file.                                         |\n| `--config[=editor]`       | Opens the config file in the default editor (or a specified one).           |\n| `-v`, `--version`         | Shows the application's version number.                                     |\n| `--debug`                 | Enables detailed logging to the console and `logs/textnomnom.log`.          |\n| `--verbose`               | Shows detailed setup steps when the launcher runs.                          |\n| `-h`, `--help`            | Shows the help message for command-line options.                            |\n\n---\n\n### License\n\nThis project is now licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurqanhun%2Ftextnomnom-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffurqanhun%2Ftextnomnom-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurqanhun%2Ftextnomnom-py/lists"}