content: [build-system]
  requires = ["setuptools>=61.0", "wheel", "build>=0.7.0"]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "od-parse"
  version = "0.1.0"
  description = "A library for parsing complex PDFs and generating Markdown"
  authors = [
      {name = "OctonData", email = "info@octondata.com"}
  ]
  readme = "README.md"
  requires-python = ">=3.8"
  license = {file = "LICENSE"}
  keywords = ["pdf", "parser", "markdown", "ocr", "handwritten", "tables"]
  classifiers = [
      "Development Status :: 3 - Alpha",
      "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",
      "Operating System :: OS Independent",
      "Topic :: Text Processing :: Markup",
      "Topic :: Scientific/Engineering :: Image Processing",
  ]
  
  dependencies = [
      "pdfminer.six>=20221105",
      "pytesseract>=0.3.10",
      "Pillow>=9.5.0",
      "pdf2image>=1.16.3",
      "numpy>=1.24.3",
      "opencv-python>=4.7.0.72",
      "tabula-py>=2.7.0",
      "markdown>=3.4.3",
  ]
  
  [project.urls]
  "Homepage" = "https://github.com/OctonData/od-parse"
  "Bug Tracker" = "https://github.com/OctonData/od-parse/issues"
  
  [project.optional-dependencies]
  dev = [
      "pytest>=7.3.1",
      "black>=23.3.0",
      "isort>=5.12.0",
      "flake8>=6.0.0",
  ]
  
  # Advanced OCR features
  trocr = [
      "torch>=2.0.0",
      "transformers>=4.30.0",
      "torchvision>=0.15.0",
  ]
  
  # Advanced table extraction
  table_transformer = [
      "torch>=2.0.0",
      "transformers>=4.30.0",
      "detectron2>=0.6",
  ]
  
  # Document understanding with vision-language models
  llava_next = [
      "torch>=2.0.0",
      "transformers>=4.40.0",
      "accelerate>=0.20.0",
      "bitsandbytes>=0.41.0",
  ]
  
  # Quality assessment
  quality_assessment = [
      "scikit-learn>=1.3.0",
      "scipy>=1.10.0",
  ]
  
  # Async processing
  async_processing = [
      "aiofiles>=23.0.0",
  ]
  
  # Multi-language support
  multilingual = [
      "spacy>=3.6.0",
      "langdetect>=1.0.9",
      "polyglot>=16.7.4",
      "googletrans>=4.0.0",
  ]
  
  # GPU acceleration
  gpu_acceleration = [
      "cupy-cuda11x>=12.0.0",
  ]
  
  # Advanced caching
  advanced_caching = [
      "redis>=4.5.0",
      "joblib>=1.3.0",
  ]
  
  # Preset combinations
  basic = [
      "scikit-learn>=1.3.0",
      "scipy>=1.10.0",
      "aiofiles>=23.0.0",
  ]
  
  advanced = [
      "torch>=2.0.0",
      "transformers>=4.30.0",
      "torchvision>=0.15.0",
      "detectron2>=0.6",
      "scikit-learn>=1.3.0",
      "scipy>=1.10.0",
      "aiofiles>=23.0.0",
      "spacy>=3.6.0",
      "langdetect>=1.0.9",
  ]
  
  experimental = [
      "torch>=2.0.0",
      "transformers>=4.40.0",
      "torchvision>=0.15.0",
      "accelerate>=0.20.0",
      "bitsandbytes>=0.41.0",
      "detectron2>=0.6",
      "scikit-learn>=1.3.0",
      "scipy>=1.10.0",
      "aiofiles>=23.0.0",
      "spacy>=3.6.0",
      "langdetect>=1.0.9",
  ]
  
  # All optional dependencies
  all = [
      "torch>=2.0.0",
      "transformers>=4.40.0",
      "torchvision>=0.15.0",
      "accelerate>=0.20.0",
      "bitsandbytes>=0.41.0",
      "detectron2>=0.6",
      "scikit-learn>=1.3.0",
      "scipy>=1.10.0",
      "aiofiles>=23.0.0",
      "spacy>=3.6.0",
      "langdetect>=1.0.9",
      "polyglot>=16.7.4",
      "googletrans>=4.0.0",
      "cupy-cuda11x>=12.0.0",
      "redis>=4.5.0",
      "joblib>=1.3.0",
  ]
  
  [tool.black]
  line-length = 88
  target-version = ["py38"]
  
  [tool.isort]
  profile = "black"
  line_length = 88
  