pdf格式转换--开源项目marker的安装使用(附wsl环境配置cuda和开发环境)

一级目录

二级目录

三级目录

pdf格式转换–开源项目marker的安装使用(附wsl环境配置cuda和开发环境)

在日常学习时由于习惯用md格式收集整理各种各样的笔记,在阅读pdf书籍资料时无法像md文件那样轻松编辑,遇到问题时也不易整理,之前接触到marker这个开源项目可以将pdf转换成几种格式的文件,这里做一下整理使用。

本文主要整理和记录的是在wsl环境下的cuda和开发环境配置,当这些前置步骤做好了使用marker等开源项目只要按照官方文档操作即可。

为什么选择wsl环境?
如果使用linux系统的话在安装nvida驱动时可能会遇到黑屏等问题解决起来比较耗时,在ubuntu系统下可自行搜索nvidia驱动安装(可能会遇到驱动安装后造成黑屏死机等问题,黑屏死机的解决方案见前文Ubuntu 安装 NVIDIA 驱动导致黑屏详细解决方案),windows系统是天然就支持nvida驱动的,但是使用windows系统本身的开发环境直接运行marker这种项目却会有各种各样的问题,wsl就能够像在linux上一样避免这些浪费时间的问题。

有关marker的介绍和调用方式详细可参考项目地址:https://github.com/VikParuchuri/marker
这里贴一下它的简要介绍:
Marker converts PDFs to markdown, JSON, and HTML quickly and accurately.

Supports a wide range of documents
Supports all languages
Removes headers/footers/other artifacts
Formats tables and code blocks
Extracts and saves images along with the markdown
Converts equations to latex
Easily extensible with your own formatting and logic
Works on GPU, CPU, or MPS

实测效果感觉虽不是很理想但比起一般的工具如pandoc等还是要强不少的。

下面首先整理一下wsl的常用或者说是必备操作吧

wsl安装

打开 PowerShell(以管理员身份运行),依次执行以下命令:

# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 重启电脑后,设置 WSL2 为默认版本
wsl --set-default-version 2

# 安装 Ubuntu(推荐的 Linux 发行版)
wsl --install -d Ubuntu

备份 WSL 实例

  1. 导出 WSL 实例
    使用 wsl.exe 命令导出你的 WSL 实例。打开 PowerShell 或命令提示符,并运行以下命令:

    wsl --export <DistroName> <BackupFileName>.tar
    

    其中,<DistroName> 是你的 WSL 发行版的名称(例如 Ubuntu-22.04),<BackupFileName> 是你想要保存的备份文件名。

    示例:

    wsl --export Ubuntu-22.04 C:\WSL_Backup\ubuntu_backup.tar
    
  2. 确认备份文件
    确保备份文件成功创建在指定的目录中。

恢复 WSL 实例

如果未来需要恢复备份,可以使用以下步骤:

  1. 导入 WSL 实例
    使用 wsl.exe 导入之前的备份。打开 PowerShell 或命令提示符,并运行:

    wsl --import <NewDistroName> <InstallLocation> <BackupFileName>.tar --version 2
    
    • <NewDistroName> 是你想给新实例起的名称。
    • <InstallLocation> 是你希望安装此实例的目录。
    • <BackupFileName> 是你之前创建的备份文件名。

    示例:

    wsl --import Ubuntu-22.04-Restore C:\WSL\Ubuntu-Restore C:\WSL_Backup\ubuntu_backup.tar --version 2
    

version 2表示使用wsl2
导入后的默认以root用户登录,修复:
首先可以去/home下查看用户名,之后关闭wsl :wsl --shutdown 查看名称wsl -l -v
启动wsl -d Ubuntu
在wsl中配置wsl.conf: sudo vim /etc/wsl.conf:
添加:

[user]
default=lailai

[boot]
systemd=true

[automount]
enabled=true    # 启用自动挂载 Windows 驱动器
options="metadata,umask=22,fmask=11" # 设置挂载选项

[network]
generateHosts=true
generateResolvConf=true

配置说明:

  • metadata: 允许在 Linux 文件系统中存储 Windows 文件的权限信息

  • umask=22: 设置默认权限掩码

    • 文件默认权限为 644 (rw-r–r–)
    • 目录默认权限为 755 (rwxr-xr-x)
  • fmask=11: 专门为文件设置权限掩码

    • 确保文件不会被意外设置为可执行
  • generateHosts=true

    • 自动更新 /etc/hosts 文件
    • 确保 WSL 可以解析 Windows 主机名
    • 添加必要的本地主机条目
  • generateResolvConf=true

    • 自动生成 /etc/resolv.conf 文件
    • 使用 Windows 的 DNS 设置
    • 确保 WSL 可以正常解析域名
      在 WSL (Windows Subsystem for Linux) 的 Ubuntu 中安装适用于 CUDA 的 PyTorch 版本,可以按照以下步骤进行。请确保已经安装了 WSL 2 并配置了 Ubuntu。具体步骤如下:

如何开启wsl内的代理

虽然通过配置镜像源的方式能解决大部分下载问题,但有时就是需要下载某些原生的软件或者访问请求等,这时就可以将windows主机内的代理同步到wsl中,如果使用clash,一种比较简单的方式是开启TUN模式,但有时会遇到失效的情况,也可以直接在wsl内通过设置代理地址的方式:

# 设置 windows_host 变量
export windows_host=$(ip route | grep default | awk '{print $3}')

# 设置代理
export http_proxy="http://$windows_host:7890"
export https_proxy="http://$windows_host:7890"
export all_proxy="socks5://$windows_host:7890"

# 测试代理是否生效
curl www.google.com

pytorch/cuda环境配置

接下来是环境的配置:

1. 更新系统

首先,打开 WSL 的终端,确保你的系统是最新的:

sudo apt update
sudo apt upgrade

更新失败时:

sudo apt dist-upgrade # 会处理依赖关系
sudo apt-get -f install # 也是修复依赖

2. 安装必要的依赖

在安装 PyTorch 之前,确保你的系统装有必要的依赖项:

sudo apt install python3 python3-pip python3-venv

3. 创建和激活虚拟环境(可选步骤)

为了保持项目的整洁,建议创建一个 Python 虚拟环境:

python3 -m venv marker_env
source marker_env/bin/activate

安装go :

wget https://golang.org/dl/go1.23.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.2.linux-amd64.tar.gz

vim ~/.bashrc —>`source ~/.bashrc

# 设置 Go 的安装路径
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

验证:go version

4. 安装 NVIDIA 驱动和 CUDA Toolkit

确保你的 Windows 系统中安装了 NVIDIA 图形驱动,并且支持 CUDA。然后,可以在 WSL 中安装 CUDA Toolkit。

  1. 安装 NVIDIA 驱动

    • 确保你的 Windows 系统安装了最新版本的 NVIDIA 驱动,这些驱动支持 CUDA。
  2. 安装 CUDA Toolkit

# 添加以下内容到文件末尾
export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

–>source ~/.bashrc,查看安装nvcc -V

5. 安装 PyTorch

根据你的 CUDA 版本,选择合适的 PyTorch 安装命令。可以在 PyTorch 官方网站 找到具体的安装命令。通常,你可以使用以下命令安装 PyTorch:

例如,如果你安装了 CUDA 11.7,使用以下命令:

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117

6. 验证安装

安装完成后,运行 Python 并验证 PyTorch 是否成功安装:

python3

然后输入以下 Python 代码:

import torch
print(torch.__version__)
print(torch.cuda.is_available())
  • 如果 PyTorch 安装正确,会输出版本号。
  • torch.cuda.is_available() 如果返回 True,则说明 CUDA 可以正常使用。

marker安装使用

前置:gpu加速,nvidia显卡驱动,cuda,pytorch

安装marker-pdf:pip install marker-pdf
安装ocr:

# 1. 安装ocrmypdf
sudo apt-get install ocrmypdf

# 2. 安装ghostscript(使用提供的脚本)
bash scripts/install/ghostscript_install.sh

# 3. 安装Python包
pip install ocrmypdf

# 4. 安装tesseract语言包(根据需要选择语言)
sudo apt-get install tesseract-ocr-eng

# 5. 查找tessdata路径
find / -name tessdata

# 6. 创建环境变量文件
# 将找到的tessdata路径填入下面的命令
echo "TESSDATA_PREFIX=/你找到的/tessdata/路径" > local.env

中文简体:tesseract-ocr-chi-sim,繁体:tesseract-ocr-chi-tra
安装完成后,可以运行以下命令来检查安装的语言包

tesseract --list-langs

在这里插入图片描述
Tesseract单独使用ocr示例:

tesseract image.png output -l chi_sim
  • image.png 是您要识别的图像文件。
  • output 是输出文件的前缀,Tesseract 会生成 output.txt
  • -l chi_sim 指定使用简体中文语言包进行识别。

使用find / -name tessdatasudo find / -name tessdata时:

sudo find / -name tessdata
/usr/share/tesseract-ocr/4.00/tessdata
find: File system loop detected; ‘/mnt/wslg/distro’ is part of the same file system loop as ‘/’.
find: ‘/mnt/c/Program Files/Windows Defender Advanced Threat Protection/Classification/Configuration’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows/CapabilityAccessManager’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows/SystemData’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows Defender Advanced Threat Protection/Cache’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows Defender Advanced Threat Protection/Cyber’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows Defender Advanced Threat Protection/DataCollection’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows Defender Advanced Threat Protection/DLP’: Permission denied 
find: ‘/mnt/c/ProgramData/Microsoft/Windows Defender Advanced Threat Protection/Downloads’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows Defender Advanced Threat Protection/Platform’: Permission denied
find: ‘/mnt/c/ProgramData/Microsoft/Windows Defender Advanced Threat Protection/SenseCM’: Permission denied
。。。

这种情况是因为你在WSL (Windows Subsystem for Linux)环境下运行命令,而这些Permission denied错误是完全正常的:

  • 即使你使用sudo,也无法访问某些Windows系统保护的目录
  • 这些目录通常是Windows系统目录或特殊服务目录
  • 这里已经找到了需要的tessdata目录/usr/share/tesseract-ocr/4.00/tessdata

marker_single转换pdf

我们可以使用marker_single命令来转换单个PDF文件。

首先创建一个输出目录来保存markdown和图片:

# 创建输出目录
mkdir -p /mnt/e/.../output

然后使用marker_single命令转换PDF:

marker_single "/mnt/e/.../xxx.pdf" "/mnt/e/.../output"

说明:

  1. 默认情况下会:

    • 自动提取和保存图片(EXTRACT_IMAGES=True
    • 图片会保存在输出目录下的images文件夹中
    • 生成markdown文件和一个metadata.json文件
  2. 如果文档较大,你可以添加一些参数来控制转换:

marker_single "/mnt/e/.../xxx.pdf" "/mnt/e/.../output" \
  --batch_multiplier 2 \  # 如果你有足够的显存,可以提高处理速度
  --max_pages 50    # 如果你想先测试部分页面
  1. 如果转换效果不理想,可以尝试强制使用OCR:
# 设置环境变量强制OCR
export OCR_ALL_PAGES=true
# 然后运行转换命令
marker_single "/mnt/e/.../xxx.pdf" "/mnt/e/.../output"

转换完成后,在output目录下你会看到:

  • 一个.md文件(转换后的markdown文档)
  • 一个metadata.json文件(包含转换的统计信息)
  • 一个images文件夹(包含所有提取的图片)

GPU显存设置

参数:--batch_multiplier用来控制GPU显存使用的,而不是系统内存(RAM)

  • Marker默认设置:

    • 默认使用约3-4GB显存
    • –batch_multiplier 1是默认值
    • –batch_multiplier 2会使用约6-8GB显存
    • –batch_multiplier 3会使用约9-12GB显存
  • 如何设置这个参数:

  • 首先查看你的显卡显存大小:nvidia-smi

在这里插入图片描述
根据你的显卡显存大小来设置:

  • 如果显存 4GB:使用默认值 --batch_multiplier 1
    • 如果显存 8GB:可以使用 --batch_multiplier 2
    • 如果显存 12GB或以上:可以使用 --batch_multiplier 3或更高
    1. 实际使用建议:bash# 如果你有8GB显存的显卡marker_single “你的PDF路径” “输出目录” --batch_multiplier 2# 如果你有12GB或以上显存的显卡marker_single “你的PDF路径” “输出目录” --batch_multiplier 3
    1. 如果你没有独立显卡: - Marker会自动使用CPU模式 - 这种情况下–batch_multiplier参数影响不大 - 建议保持默认值或设置为1。如果你不确定,可以运行:bashnvidia-smi来查看显卡信息。

运行命令过程中会从huggingface下载模型,需要开启代理下载加速,参考前文。
或尝试使用镜像export HF_ENDPOINT=https://hf-mirror.com然后重新运行marker_single xxx命令

### 如何使用开源项目 Marker #### 安装 Marker 为了能够顺利运行 Marker,需先完成其安装过程。对于不同操作系统而言,具体的安装指令可能有所差异,在此主要针对 Linux macOS 用户提供指导[^1]。 在终端执行如下命令来克隆仓库并进入相应文件夹: ```bash git clone https://gitcode.com/gh_mirrors/mar/marker.git && cd marker ``` 接着按照官方文档中的说明进行依赖项的安装以及必要的环境变量设置[^3]。 #### 配置 WSL 环境 (可选) 如果是在 Windows Subsystem for Linux (WSL) 上部署,则还需要额外配置 CUDA 及其他开发工具链。这部分内容较为复杂,建议参照专门的文章或教程来进行操作。 #### 启动与基本功能探索 成功安装之后就可以通过简单的命令启动 Marker 了。输入 `marker` 即可在当前路径下激活该程序,并打开交互式的命令面板界面[^5]。 此时可以尝试一些基础的功能测试,比如查看帮助信息(`marker help`)、列出支持的操作选项等。随着熟悉度增加,还可以进一步挖掘更多高级特性,如自定义主题样式或是集成到特定的工作流当中去[^4]。 #### 将 PDF 转换为 Markdown 文件 Marker 的一大亮点在于它可以快速而精准地把 PDF 文档转化为易于编辑处理的 Markdown 格式文本。只需指定目标文件名作为参数传递给转换函数即可实现自动化流程[^2]: ```bash marker convert input.pdf output.md ``` 以上就是关于如何使用开源项目 Marker 的详细介绍。希望这些资料可以帮助使用者更好地理解掌握这一实用工具的应用场景技术细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱松子鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值