PDF转Markdown

PDF转Markdown

1.下载安装mineru

1.1下载并安装anaconda

点击链接下载anaconda安装包:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2025.12-2-Windows-x86_64.exe

然后双击安装包,安装anaconda

如果下载链接失效,进入清华源网站寻找合适的安装包:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

1.2安装mineru

打开powershell,输入:

1
pip install mineru[pipeline] torchvision -i http://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

1.3从modelscope下载离线模型

  • 一般下载pipeline模型就足够处理大部分的任务:

    1
    mineru-models-download -s modelscope -m pipeline
  • 如果有8G显存的GPU,还可以下载vlm模型用于处理更复杂的任务:

    1
    mineru-models-download -s modelscope -m all

2.使用mineru转换PDF文件

2.1设置临时环境变量,指定使用”modelscope”模型

进入放着PDF文件的文件夹,打开POWERSHELL并输入:

1
$env:MINERU_MODEL_SOURCE = "modelscope"

2.2转换PDF文件

  • 如果没有8G显存的GPU,使用pipeline模型:

    1
    mineru -p input.pdf -o . -b pipeline
  • 如果有8G显存的GPU,使用vlm模型或者混合模型:

    1
    2
    mineru -p input.pdf -o . -b hybrid-auto-engine # 混合模型
    mineru -p input.pdf -o . -b vlm-auto-engine # vlm模型

提示:把input.pdf替换成PDF文件的文件名

2.3指定页数转换

mineru有两个可以选择的参数,起始页-s和终止页-e,并且页数从0开始计数

可以利用此功能使用混合模型转换难处理的页面:

1
2
3
4
5
6
7
8
# 只转换第4页
mineru -p input.pdf -o . -b hybrid-auto-engine -s 3 -e 3

# 只转换前6页
mineru -p input.pdf -o . -b hybrid-auto-engine -e 5

# 只转换4到9页
mineru -p input.pdf -o . -b hybrid-auto-engine -s 3 -e 8

3.模型安装路径

如果需要卸载下载的离线模型,模型的安装路径如下:

1
%USERPROFILE%\.cache\modelscope\hub\models\OpenDataLab

4.PDF文件转换器(bat程序):

新建PDF文件转换.txt文件,填入以下代码,然后重命名为PDF文件转换.bat,即可得到便于使用的bat程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
@echo off
setlocal enabledelayedexpansion

echo ========================================
echo MinerU PDF Parser
echo ========================================
echo.
echo PDF files in current directory:
echo ----------------------------------------
set file_count=0
for %%i in (*.pdf) do (
set /a file_count+=1
echo !file_count!. %%i
)
echo ----------------------------------------

:: Check if there are any PDF files
if %file_count% equ 0 (
echo [ERROR] No .pdf file found in current directory!
pause
exit /b 1
)

:: Get user input for file name
set /p INPUT_FILE="Enter file name (number or full name, Enter for first one): "

if "%INPUT_FILE%"=="" (
set file_num=1
for %%i in (*.pdf) do (
if !file_num! equ 1 set INPUT_FILE=%%i
set /a file_num+=1
)
echo Auto-selected: !INPUT_FILE!
) else (
echo %INPUT_FILE%|findstr /r "^[0-9]*$" >nul
if not errorlevel 1 (
set file_num=1
for %%i in (*.pdf) do (
if !file_num! equ %INPUT_FILE% set INPUT_FILE=%%i
set /a file_num+=1
)
echo Selected: !INPUT_FILE!
) else (
if not exist "%INPUT_FILE%" (
echo [ERROR] File "%INPUT_FILE%" not found!
pause
exit /b 1
)
)
)

:: Get base filename without extension
set BASENAME=%~n1
if "%BASENAME%"=="" (
for %%i in ("%INPUT_FILE%") do set BASENAME=%%~ni
)

echo.
echo ========================================
echo Page Range (Optional)
echo ========================================
echo Leave empty to process all pages.
echo Page numbers start from 1 (first page = 1)
echo ========================================
echo.

set /p START_PAGE_INPUT="Enter start page (Enter for first page): "
set /p END_PAGE_INPUT="Enter end page (Enter for last page): "

:: Convert user input (1-indexed) to mineru format (0-indexed)
set START_PAGE=
set END_PAGE=
set START_ARG=
set END_ARG=
set FOLDER_START=*
set FOLDER_END=*

if not "%START_PAGE_INPUT%"=="" (
set /a START_PAGE=%START_PAGE_INPUT% - 1
set START_ARG=-s !START_PAGE!
set FOLDER_START=%START_PAGE_INPUT%
echo Start page: %START_PAGE_INPUT% ^(mineru: !START_PAGE!^)
)

if not "%END_PAGE_INPUT%"=="" (
set /a END_PAGE=%END_PAGE_INPUT% - 1
set END_ARG=-e !END_PAGE!
set FOLDER_END=%END_PAGE_INPUT%
echo End page: %END_PAGE_INPUT% ^(mineru: !END_PAGE!^)
)

:: Build output folder name
set OUTPUT_FOLDER=%BASENAME%_%FOLDER_START%-%FOLDER_END%
:: Clean up double *- or -*
if "%START_PAGE_INPUT%"=="" set OUTPUT_FOLDER=%BASENAME%_*-%FOLDER_END%
if "%END_PAGE_INPUT%"=="" set OUTPUT_FOLDER=%BASENAME%_%FOLDER_START%-*
if "%START_PAGE_INPUT%"=="" if "%END_PAGE_INPUT%"=="" set OUTPUT_FOLDER=%BASENAME%_full

echo.
echo Output folder: %OUTPUT_FOLDER%

echo.
echo ========================================
echo Select Backend Model
echo ========================================
echo [1] pipeline - Fast, CPU/low VRAM, good for text
echo [2] hybrid-auto-engine - High accuracy, 8GB+ VRAM, good for tables
echo [3] vlm-auto-engine - Pure VLM, 8GB+ VRAM, CN/EN optimized
echo ========================================
echo [Enter] default: pipeline
echo ========================================
echo.

set /p MODEL_CHOICE="Enter option [1/2/3] (Enter for default pipeline): "

:: Set model type
if "%MODEL_CHOICE%"=="2" (
set MODEL_TYPE=hybrid-auto-engine
echo Selected: hybrid-auto-engine
) else if "%MODEL_CHOICE%"=="3" (
set MODEL_TYPE=vlm-auto-engine
echo Selected: vlm-auto-engine
) else (
set MODEL_TYPE=pipeline
echo Selected: pipeline
)

:: Create output directory if not exists
if not exist "%OUTPUT_FOLDER%" mkdir "%OUTPUT_FOLDER%"

echo.
echo ========================================
echo Processing...
echo Input: %INPUT_FILE%
echo Model: %MODEL_TYPE%
if not "%START_PAGE_INPUT%"=="" echo Start page: %START_PAGE_INPUT%
if not "%END_PAGE_INPUT%"=="" echo End page: %END_PAGE_INPUT%
echo Output: %CD%\%OUTPUT_FOLDER%
echo ========================================
echo.

:: Execute MinerU command with modelscope source
:: Use PowerShell with direct parameter passing to handle Chinese characters and parentheses
powershell -Command "& { $env:MINERU_MODEL_SOURCE='modelscope'; mineru -p '%INPUT_FILE%' -o '%OUTPUT_FOLDER%' -b '%MODEL_TYPE%' %START_ARG% %END_ARG% }"

:: Check execution result
if errorlevel 1 (
echo.
echo [ERROR] Parse failed!
echo.
echo Possible issues:
echo - For auto-engine models: Need 8GB+ VRAM NVIDIA GPU
echo - Check if mineru is installed: pip install magic-pdf[full]
) else (
echo.
echo [SUCCESS] Parse completed!
echo Output saved in: %CD%\%OUTPUT_FOLDER%
)

echo.
pause