[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "docstrange" version = "1.1.8" description = "Extract and Convert PDF, Word, PowerPoint, Excel, images, URLs into multiple formats (Markdown, JSON, CSV, HTML) with intelligent content extraction and advanced OCR." readme = "README.md" license = {text = "MIT"} authors = [ {name = "Nanonets", email = "team@nanonets.com"} ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup", "Topic :: Multimedia :: Graphics :: Graphics Conversion", ] keywords = ["llm", "document-processing", "document-conversion", "markdown", "pdf", "image-processing", "intelligent-document-processing", "document-understanding", "ocr", "rag", "ai-training-data", "unstructured-alternative", "docling-alternative", "marker-alternative", "markitdown-alternative", "mineru-alternative", "paddleocr-alternative", "tesseract-alternative", "document-to-markdown", "pdf-to-markdown", "local-document-processing", "offline-document-extractor", "structured-data-extraction", "table-extraction", "layout-detection", "llm-ready-data", "document-ai", "text-extraction", "html-to-markdown", "excel-to-markdown", "powerpoint-to-markdown", "word-to-markdown", "batch-document-processing", "docstrange"] requires-python = ">=3.8" dependencies = [ "Pillow>=9.0.0", "pdf2image>=1.17.0", "markdownify>=0.11.6", "requests>=2.25.0", "beautifulsoup4>=4.9.0", "lxml>=4.6.0", "python-docx>=0.8.11", "python-pptx>=0.6.21", "pypandoc>=1.11", "openpyxl>=3.0.0", "pandas>=1.3.0", "numpy>=1.21.0,<2.0.0", "docling-ibm-models>=0.1.0", "easyocr>=1.7.0", "huggingface_hub>=0.23.0", "tqdm>=4.64.0", "Flask>=2.0.0", # MCP and related dependencies only for Python 3.10+ "mcp>=1.0.0; python_version>='3.10'", "tiktoken>=0.5.0; python_version>='3.10'", # Conservative versions for Python 3.8 to avoid build issues "transformers>=4.20.0,<4.50.0; python_version<='3.8'", "tokenizers>=0.13.0,<0.20.0; python_version<='3.8'", "setuptools>=65.0.0; python_version<='3.8'", "wheel>=0.37.0; python_version<='3.8'", # Latest compatible versions for Python 3.9+ "transformers>=4.20.0; python_version>='3.9'", "tokenizers>=0.13.0; python_version>='3.9'", ] [project.optional-dependencies] dev = [ "pytest>=6.0.0", "pytest-cov>=2.10.0", "black>=21.0.0", "flake8>=3.8.0", "mypy>=0.800", ] local-llm = [ "ollama>=0.5.0", ] web = [ "Flask>=2.0.0", ] [project.scripts] docstrange = "docstrange.cli:main" docstrange-web = "docstrange.web_app:run_web_app" [project.urls] Homepage = "https://github.com/nanonets/docstrange" Repository = "https://github.com/nanonets/docstrange" Documentation = "https://github.com/nanonets/docstrange#readme" Issues = "https://github.com/nanonets/docstrange/issues" [tool.setuptools.packages.find] where = ["."] include = ["docstrange*"] exclude = ["mcp_server_module*", "tests*", "examples*"] [tool.setuptools.package-data] docstrange = ["**/*"] [tool.black] line-length = 88 target-version = ['py38', 'py39', 'py310', 'py311', 'py312'] [tool.isort] profile = "black" line_length = 88 [tool.mypy] python_version = "3.8" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true