pyproject.toml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. [build-system]
  2. requires = ["setuptools>=61.0", "wheel"]
  3. build-backend = "setuptools.build_meta"
  4. [project]
  5. name = "mineru"
  6. dynamic = ["version"]
  7. license = { text = "AGPL-3.0" }
  8. description = "A practical tool for converting PDF to Markdown"
  9. readme = "README.md"
  10. requires-python = ">=3.10,<3.14"
  11. keywords = ["magic-pdf", "mineru", "MinerU", "convert", "pdf", "markdown"]
  12. classifiers = [
  13. "Programming Language :: Python :: 3.10",
  14. "Programming Language :: Python :: 3.11",
  15. "Programming Language :: Python :: 3.12",
  16. "Programming Language :: Python :: 3.13",
  17. ]
  18. dependencies = [
  19. "boto3>=1.28.43",
  20. "click>=8.1.7",
  21. "loguru>=0.7.2",
  22. "numpy>=1.21.6",
  23. "pdfminer.six==20250506",
  24. "tqdm>=4.67.1",
  25. "requests",
  26. "httpx",
  27. "pillow>=11.0.0",
  28. "pypdfium2>=4.30.0",
  29. "pypdf>=5.6.0",
  30. "reportlab",
  31. "pdftext>=0.6.2",
  32. "modelscope>=1.26.0",
  33. "huggingface-hub>=0.32.4",
  34. "json-repair>=0.46.2",
  35. "opencv-python>=4.11.0.86",
  36. "fast-langdetect>=0.2.3,<0.3.0",
  37. "scikit-image>=0.25.0,<1.0.0",
  38. "openai>=1.70.0,<3",
  39. "beautifulsoup4>=4.13.5,<5",
  40. "magika>=0.6.2,<1.1.0",
  41. "mineru-vl-utils>=0.1.17,<1",
  42. "qwen-vl-utils>=0.0.14,<1",
  43. ]
  44. [project.optional-dependencies]
  45. test = [
  46. "mineru[core]",
  47. "pytest",
  48. "pytest-cov",
  49. "coverage",
  50. "fuzzywuzzy"
  51. ]
  52. vlm = [
  53. "torch>=2.6.0,<3",
  54. "transformers>=4.51.1,!=4.57.2,<5.0.0",
  55. "accelerate>=1.5.1",
  56. ]
  57. vllm = [
  58. "vllm>=0.10.1.1,<0.12",
  59. ]
  60. lmdeploy = [
  61. "lmdeploy>=0.10.2,<0.12",
  62. ]
  63. mlx = [
  64. "mlx-vlm>=0.3.3,<0.4",
  65. ]
  66. pipeline = [
  67. "matplotlib>=3.10,<4",
  68. "ultralytics>=8.3.48,<9",
  69. "doclayout_yolo==0.0.4",
  70. "dill>=0.3.8,<1",
  71. "PyYAML>=6.0.2,<7",
  72. "ftfy>=6.3.1,<7",
  73. "shapely>=2.0.7,<3",
  74. "pyclipper>=1.3.0,<2",
  75. "omegaconf>=2.3.0,<3",
  76. "torch>=2.6.0,<3",
  77. "torchvision",
  78. "transformers>=4.49.0,!=4.51.0,<5.0.0",
  79. "onnxruntime>1.17.0",
  80. ]
  81. api = [
  82. "fastapi",
  83. "python-multipart",
  84. "uvicorn",
  85. ]
  86. gradio = [
  87. "gradio>=5.34,<6",
  88. "gradio-pdf>=0.0.22",
  89. ]
  90. core = [
  91. "mineru[vlm]",
  92. "mineru[pipeline]",
  93. "mineru[api]",
  94. "mineru[gradio]",
  95. "mineru[mlx] ; sys_platform == 'darwin'",
  96. ]
  97. all = [
  98. "mineru[core]",
  99. "mineru[vllm] ; sys_platform == 'linux'",
  100. "mineru[lmdeploy] ; sys_platform == 'windows'",
  101. ]
  102. [project.urls]
  103. homepage = "https://mineru.net/"
  104. documentation = "https://opendatalab.github.io/MinerU/"
  105. repository = "https://github.com/opendatalab/MinerU"
  106. issues = "https://github.com/opendatalab/MinerU/issues"
  107. [project.scripts]
  108. mineru = "mineru.cli:client.main"
  109. mineru-vllm-server = "mineru.cli.vlm_server:vllm_server"
  110. mineru-lmdeploy-server = "mineru.cli.vlm_server:lmdeploy_server"
  111. mineru-openai-server = "mineru.cli.vlm_server:openai_server"
  112. mineru-models-download = "mineru.cli.models_download:download_models"
  113. mineru-api = "mineru.cli.fast_api:main"
  114. mineru-gradio = "mineru.cli.gradio_app:main"
  115. [tool.setuptools.dynamic]
  116. version = { attr = "mineru.version.__version__" }
  117. [tool.setuptools.packages.find]
  118. include = ["mineru*"]
  119. namespaces = false
  120. [tool.setuptools.package-data]
  121. "mineru" = ["resources/**"]
  122. "mineru.model.utils.pytorchocr.utils" = ["resources/**"]
  123. [tool.setuptools]
  124. include-package-data = true
  125. zip-safe = false
  126. [tool.pytest.ini_options]
  127. addopts = "-s --cov=mineru --cov-report html"
  128. [tool.coverage.run]
  129. command_line = "-m pytest tests/unittest/test_e2e.py"
  130. source = ["mineru/"]
  131. omit = [
  132. "*/gradio_app.py",
  133. "*/models_download.py",
  134. "*/fast_api.py",
  135. "*/cli/client.py",
  136. "*/vlm_vllm_server.py",
  137. "*/cli_parser.py",
  138. ]
  139. [tool.coverage.html]
  140. directory = "htmlcov"
  141. [tool.coverage.report]
  142. exclude_also = [
  143. 'def __repr__',
  144. 'if self.debug:',
  145. 'if settings.DEBUG',
  146. 'raise AssertionError',
  147. 'raise NotImplementedError',
  148. 'if 0:',
  149. 'if __name__ == .__main__.:',
  150. 'if TYPE_CHECKING:',
  151. 'class .*\bProtocol\):',
  152. '@(abc\.)?abstractmethod',
  153. ]