写PDF合并提取之前,先讲个我上个月的真实经历。客户发来一套招投标文件,分散在17份PDF报告里,一共400多页,里面有技术方案、资质证明、检测报告、财务报表,格式五花八门,有的是扫描件,有的是网页直接打印的,还有一个是CAD导出的图纸文件。项目经理要求下班前合成一份带目录书签的完整文件发出去。
我当时就在想,这种需求几乎每个办公人都遇到过,但真正能快速、稳妥、不翻车处理完的人其实不多。大部分人还停留在“打开PDF编辑器一页页另存为”的阶段,或者碰到个在线工具就用,结果要么文件大小爆炸,要么排版错乱,要么下载下来的文件根本打不开。
这篇就专门聊PDF报告的合并与提取,从需求拆解、工具选型、具体操作到排查技巧,把我这些年踩过的坑和沉淀下来的方法一次说清楚。不管你是只用鼠标的普通办公族,还是需要批量处理的技术岗,都能在里面找到适合自己那一套。
1. 先搞清楚需求:你要合并的是什么,要提取的又是什么
很多人上来就问“怎么合并PDF”,但真上手就懵了,因为“合并”这个词背后其实藏着好几种完全不同的需求。同样,“提取”也分页面提取、内容提取、图片提取等不同方向。需求没拆清楚,再好的工具也救不了你。
1.1 合并PDF报告的三种典型场景
第一种是同类材料汇总。比如把1月到12月的月度运营报告合并成一份年度报告,这种场景下的源文件通常格式统一,页数相近,合并起来最简单,基本所有工具都能搞定,差别只在于效率和批量处理能力。
第二种是跨系统、跨格式的报告整合。比如把ERP导出的PDF单据、OA系统生成的审批报告、设计部门导出的图纸PDF、甚至网页打印出来的PDF放在一起合并。这种场景最大的问题在于页面尺寸不一致,有的A4有的A3,有的还混着横向页面,合并后会出现页面显示大小不统一的情况,需要在合并时或合并后做一个页面缩放处理。
第三种是多人协作的成果汇总。典型例子是投标文件,一个项目分成技术、商务、资质、业绩四个模块,由四个人分别制作成PDF,最后需要按章节顺序合并成一份完整的标书,还要带上封面、目录书签,甚至页码重排。这种需求已经超出了简单的“拼文件”,需要工具支持书签生成、页码插入、元信息修改等高级功能。
1.2 提取PDF报告的两种需求路线
页面级提取是最常见也最好理解的一种:把某一页或某几页单独保存成新的PDF文件。比如从200页的项目报告中提取第5到第8页作为附件,或者从技术白皮书中提取产品参数那几页发给客户。这种操作本质上是在做“页面的重新组合”,不涉及对文字内容本身的解析。
内容级提取则是更深一层,需要真正读取PDF里的文字、表格、图片。比如从季度报告里把所有核心数据表单独拎出来汇总成Excel,或者从设备操作手册里把图片示意图都抠出来放到PPT里做演示。说白了就是拆解PDF,把里面的要素一个个抽出来重新利用。这两条路线的工具选择差别很大,页面提取用任何PDF编辑器都行,内容提取则需要用到OCR或PDF解析库。
1.3 拿到报告先做“体检”再动手
我在处理任何一批PDF之前,都会先做一次快速盘点,这个习惯帮我避免了很多次翻车。体检项目就四个:文件数量与总页数、单个文件大小、文件是否加密、是文字版还是扫描版。
具体操作很简单,打开文件夹看一眼文件数量和大小,然后随机打开两三份文件确认页面可以正常显示、文字可以选中。如果文字选不中,说明是扫描版PDF,合并虽然不受影响,但后续如果要提取文字,就必须走OCR路线。如果文件打开要输密码,那第一步永远是先解除密码限制,合并和提取工具对加密文件的支持参差不齐,与其让工具报错,不如提前处理干净。
这一步做下来,你心里就有了底:该用什么工具、会不会遇到扫描件识别问题、合并后大概会有多大。体检完成后,再进入工具选型就顺理成章了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 工具选型:四类方案各有各的脾气
市面上能合并、提取PDF的工具多到让人选择困难。但我用了这么多年,最终把它们归类为四种方案:在线工具、桌面软件、命令行工具、Python脚本。没有哪个绝对最好,只有哪个最贴合你当时的场景。
2.1 在线工具:图快可以,但手里要有分寸
在线工具的最大优势是零安装、跨平台,打开浏览器就能用。以iLovePDF、Smallpdf这类老牌产品为代表,国内也有不少提供同类功能的在线服务。它们对二三十页的中小型报告合并,体验是相当流畅的,基本鼠标点几下就完成。
但用在线工具处理PDF报告,我一直有两个坎过不去。
一是隐私风险。报告这个词的范围很广,从月度销售数据到设计方案都可能包含公司敏感信息。上传到第三方服务器,就等于把材料交到了别人手里。所以我给自己定了个规矩:只用来处理公开资料或非敏感文件,涉密材料一律不上传在线工具。
二是功能受限。免费版基本都有文件大小和页数的硬限制,比如只能处理50页以内的文件,或者合并数量不能超过10个。真遇到几百页的大合并,在线工具要么强制你付费,要么直接报错,体验并不比专业软件好。
我的结论是:在线工具适合应急、临时处理和低敏感度文件,不适合重要报告和高频操作。
2.2 桌面软件:稳定可靠的主流选择
本地桌面软件是处理PDF报告的主力。Adobe Acrobat Pro是这个品类里的标准答案,它的合并功能可以拖拽文件调整顺序、删除多余页面、自动生成书签层级,提取页面时还能基于书签层级提取,比如把一个100页的报告按章节导出成多个文件。这一套组合拳打下来,效率非常可观。
除了Acrobat,国内用得多的还有WPS PDF和搜狗PDF编辑器。WPS的PDF功能整合得不错,如果你本来就用WPS办公,可以在不额外安装软件的情况下完成合并和提取。搜狗PDF编辑器在页面级操作上做得也算顺手,基础功能免费够用,适合不想为偶尔一两次操作掏钱的用户。
桌面软件的共同优势是处理速度稳定、功能全面、没有文件大小焦虑。缺点是正版费用不低(尤其是Acrobat),而且每次安装都需要授权管理,公司环境下不一定人人都有。
2.3 命令行工具:批量处理的效率神器
当文件数量上去了,图形界面的都会变成瓶颈。比如一次要合并60个部门的周报,或者要从1000份PDF里各提取前两页生成封面合集,这种东西拿鼠标操作会怀疑人生,但用命令行工具就是几秒钟的事。
qpdf是一个非常优秀的开源命令行工具,用它合并两个PDF只需要一条命令:
bash复制qpdf --empty --pages a.pdf b.pdf -- out.pdf
如果要合并一大批文件,配合Shell脚本遍历目录,能实现真正意义上的全自动批量合并。类似的工具还有pdfunite(来自poppler-utils套件),命令比qpdf还要直观:
bash复制pdfunite a.pdf b.pdf c.pdf output.pdf
命令行工具的学习成本在于要记命令、要理解参数,但一旦你把这些命令固化成一个脚本或者别名,后面就是一劳永逸的事。我个人的习惯是:超过10个文件的批量合并优先用命令行,不到10个的用桌面软件直接拖拽,怎么都快。
2.4 Python脚本:需要定制时的终极方案
如果命令行工具解决的是“量”的问题,Python脚本解决的就是“质”的问题——一切需要定制化逻辑的场景。比如合并后按章节添加书签、提取指定页面并把页面上的表格数据导出为Excel、按OCR识别结果自动分类页面、合并时给每一份源文件自动插入分隔页。这些需求,通用工具做不了,但用Python库就能灵活实现。
Python生态里处理PDF最常用的库是pypdf(原PyPDF2)和pdfplumber。pypdf负责页面拆分、合并、旋转、加密解密这类结构性操作,pdfplumber负责文字、表格、线条位置的精确提取。我后面实操部分会给出可以直接抄作业的代码。
总结一下工具选型的心得:在线工具解决“有和无”的问题,桌面软件解决“顺不顺手”的问题,命令行工具解决“多和多”的问题,Python脚本解决“新不新”的问题。四个方案搭配着用,基本覆盖了所有PDF报告处理场景。
3. 合并实操:从拖拽到批处理的完整流程
工具选定之后,真正动手时还有不少细节要注意。这一节我把实操的过程完整走一遍,从最简单的桌面软件操作,到命令行批量处理,再到Python定制合并,每一档都给你写清楚步骤和注意事项。
3.1 桌面软件合并的标准操作及注意事项
拿Adobe Acrobat Pro举例,操作路径是工具栏里的“组织页面”→“合并文件”。把文件拖进去后,界面会列出所有待合并的文件,这时候有三件事值得做:
第一,调整顺序。直接用拖拽的方式排列文件,这个顺序决定最终PDF的页面顺序,必须严格核对。我习惯按“文件名排序”的思路检查一遍,如果源文件命名规范(比如01_技术方案、02_商务报价),那基本不会错。
第二,删除多余页面。合并前在预览模式里快速翻一遍,把空白页、重复页、草稿页删掉。这一步虽然简单,但特别重要,因为直接从微信或邮件下载的PDF经常带着页脚广告或二维码,不处理就直接合并会让成品显得很不专业。
第三,生成书签。Acrobat合并后可以在侧边栏手动添加书签,或者用“从结构提取书签”功能基于标题层级自动生成。如果是提交给客户的正式报告,我强烈建议保留书签,那会让整个文件的可用性提升一个档次。
用WPS PDF合并的流程类似,但要注意一点:WPS免费版处理大文件时偶尔会在“另存为”环节卡住,我的建议是合并前把所有的输入文件统一转成PDF/A格式(WPS本身就支持这个功能),能明显减少兼容性问题。
还有一个细节很多人忽略:页面尺寸。A4和A3混排的文件合并后,Adobe阅读器在“适合窗口”模式下会把A3页面缩小显示,看起来参差不齐。我的处理办法是合并前统一所有页面尺寸,Acrobat里有“优化扫描页面”功能可以缩放,qpdf命令行也有对应参数。对齐后整个文件就像同一批排版出来的。
3.2 qpdf命令行批量合并:一次处理上百份文件
命令行合并的精髓在于“让循环替你干活”。我在处理每周都要做的周报合并时,写了个固定的脚本:
bash复制#!/bin/bash
cd /path/to/reports/
qpdf --empty \
$(ls *.pdf | sort) \
-- merged_weekly_report.pdf
这个脚本的关键在于 $(ls *.pdf | sort),它会把当前目录下所有PDF按文件名排序后作为输入传给qpdf。只要命名规范(比如 2025-01-06_运营周报.pdf),顺序就绝对正确,完全不需要手工干预。
qpdf还有一个非常实用的场景:合并的同时只取每个文件的指定页数。比如每个部门的季度汇报PDF有20页,但整合时只需要前5页的目录和摘要。命令可以这样写:
bash复制qpdf --empty --pages *.pdf 1-5 -- merged_toc.pdf
这段命令的意思是“把每个文件都只取出第1到第5页,然后合并”。这个操作如果放在图形界面里,你得一个个文件打开再提取再合并,但在命令行里就是一次循环的事。
使用qpdf时几个注意事项:
一是注意qpdf版本。旧版本(9.x以前)对加密文件的处理能力有限,遇到解密后的文件偶尔会报错。建议直接用最新版或者通过包管理器安装开发版,稳定得多。
二是路径中包含中文或空格时有坑。这几乎是Windows用户最常踩的坑,qpdf命令对中文路径支持不太好,解决方法是先把文件复制到一个纯英文路径的临时目录里,处理完再拷出来。虽然多了一步,但能少掉很多莫名其妙的报错。
三是验证合并结果。命令行操作成功了不代表文件就对了,我每次合并完都会用qpdf的 --check 命令做一遍完整校验:
bash复制qpdf --check merged_output.pdf
输出里如果出现 “PDF Version: 1.7” 后面跟着一串 “File is not damaged” 之类的提示,就说明文件结构正常。这一步务必养成习惯。
3.3 Python脚本定制合并:按需排序、自动生成书签
如果需要定制化更强,比如要在合并时自动按文件名的数字部分排序、给每一份源文件插入一个章节分隔页、并在PDF里生成书签目录,那就轮到Python上场了。我分享一个自己一直在用的脚本框架,基于pypdf实现:
python复制import re
from pathlib import Path
from pypdf import PdfReader, PdfWriter
source_dir = Path("reports")
output_path = Path("merged_report.pdf")
writer = PdfWriter()
# 按文件名中的数字部分排序
pdf_files = list(source_dir.glob("*.pdf"))
pdf_files.sort(key=lambda p: int(re.search(r"(\d+)", p.stem).group(1)))
for idx, pdf_path in enumerate(pdf_files, start=1):
reader = PdfReader(str(pdf_path))
for page in reader.pages:
writer.add_page(page)
# 为每个文件添加书签
writer.add_bookmark(
title=f"章节{idx}: {pdf_path.stem}",
pagenumber=len(writer.pages) - len(reader.pages),
)
with open(output_path, "wb") as out_file:
writer.write(out_file)
这段代码做的事情很清晰:扫描reports目录下所有PDF,按文件名里的数字排序,依次把页面加入writer对象,同时给每个源文件创建一个书签,书签指向该文件的第一页。
脚本里有两个点特别提醒新手注意:
一是 add_bookmark 的 pagenumber 参数是0索引的,所以要用 len(writer.pages) - len(reader.pages) 反推出当前文件第一页的页码。如果直接传页码,常会出现书签位置偏了几页的情况。
二是排序逻辑里的正则 (\d+) 只匹配第一个数字。如果文件名类似“方案_v1_final_2023.pdf”,匹配的数字是1,不是版本号也是不年份,这时候就要根据你的命名规范调整正则表达式,不能拿来主义者照抄。
pypdf的性能对几百页的文件是毫无压力的。我实测过合并一份600页的报告,耗时大约在两秒左右,远快于图形界面。而且脚本可以重复使用,下次拿到新的报告,改一下路径就能直接跑。
4. 提取实操:页面提取与内容提取分开说
提取比合并复杂,因为“提取”至少可以拆成三个维度:提取页面、提取文本数据、提取图片。每一个维度的操作方法和工具都不相同。这一节按三个维度分别讲。
4.1 页面提取:保存指定页面为新文件
页面提取是所有提取操作里最基础的一种。在Google Chrome里打开PDF(直接拖进浏览器窗口即可),点打印按钮,在“目标打印机”里选择“另存为PDF”,然后修改页面范围,只输入你需要的页码,就能导出一个只包含指定页面的新PDF文件。这个方法零安装、完全免费,在全平台通用。
桌面软件里的页面提取操作也很直接。Acrobat Pro中“组织页面”→“提取”,可以勾选“删除已提取的页面”还是“保留”。我建议在“提取后删除”之前三思,除非你确定源文件已经备份,否则默认保留原文件,万一提取出错还能恢复。
命令行提取页面是效率最高的方式。qpdf用 --pages 参数加上页号范围就能完成:
bash复制qpdf --empty --pages source.pdf 5-8 -- extracted.pdf
这就是把source.pdf的第5到第8页单独保存成一个名为extracted.pdf的新文件。如果想要不连续的页,比如第2页、第7页和第15页,就写 2 7 15:
bash复制qpdf --empty --pages source.pdf 2 7 15 -- extracted.pdf
这种操作的工程量几乎为零,速度极快,所以我在日常工作中几乎不再打开图形界面做页面提取了。
4.2 文字与表格提取:pdfplumber处理文本和表格
页面提取只是切文件,文字和表格提取才是真正的“数据活”。市面上很多PDF转Word工具的效果都一言难尽,问题就在于PDF里的文字往往不是按“阅读顺序”存储的,而是按“绘制顺序”存储的,多栏排版、文本框错位、表格线缺失,都会导致转换结果乱七八糟。
这个场景我推荐用pdfplumber,它不像传统PDF库那样只关心页面的文字流,而是能拿到每个文字块在页面上的精确坐标,也能识别表格的行列线。以下是一个从PDF报告里批量提取表格的脚本:
python复制import pdfplumber
def extract_tables_from_pdf(pdf_path, output_csv):
with pdfplumber.open(pdf_path) as pdf:
with open(output_csv, "w", encoding="utf-8-sig") as f:
for page_num, page in enumerate(pdf.pages, start=1):
tables = page.extract_tables()
for table in tables:
for row in table:
f.write("|".join("" if cell is None else str(cell) for cell in row) + "\n")
f.write(f"--- page {page_num} ---\n")
extract_tables_from_pdf("quarterly_report.pdf", "tables.csv")
这里面有两个细节对结果影响极大:
一是 encoding="utf-8-sig"。不加这个参数,生成的CSV用Excel打开时会乱码,因为Excel默认用ANSI编码解析文本文件。我会在涉及中文的CSV写入时都加上它。
二是表格提取函数 extract_tables() 对“扫描件”无效。如果报告本身就是图片,必须先经过OCR识别后才能提取表格。我常用的方案是先运行PaddleOCR对扫描件做OCR,生成带文字层的PDF,再用pdfplumber提取。两个工具搭配起来能处理相当复杂的混合型报告。
如果是纯文字提取(不需要表格结构),可以把上面脚本里的 extract_tables() 换成 page.extract_text(),把表格逻辑去掉,得到的就是纯文本内容。这个方案在提取合同条款、操作手册正文时效率很高。
4.3 图片提取:从报告里抠图的技巧
报告里的配图(产品照片、数据截图、Logo、架构图)也需要提取。最快的办法是用pdfimages命令(来自poppler-utils套件),一条命令就能把所有图片提取出来:
bash复制pdfimages -png -p report.pdf extracted_image
-png 表示输出为PNG格式,-p 会在文件名里加上页面号,方便溯源。提取出的图片文件名是 extracted_image-01-001.png 这种格式,第一个数字是页面号,第二个是该页上的图片序号。
需要注意,pdfimages提取出来的是PDF文件中“存储的原图”,不经过任何压缩或重编码。这意味着如果源PDF里嵌的是一张300dpi的大图,提取出来的就是原尺寸原质量的文件,这对做汇报材料或再排版很有帮助。但反过来,如果源PDF是网上下载的低分辨率版本,提取出来的图也同样模糊,这属于源文件的问题,工具无能为力。
如果不想装命令行工具,也可以用Acrobat Pro的“导出到”→“图像”功能,优点是能提供JPEG、PNG、TIFF等多种格式选择,缺点是只能按整份文档导出,如果想选择性提取就需要先把需要的页面单独提取成小文件,再导出图像,步骤繁琐。
5. 常见问题与排查技巧实录
做PDF处理这一行,不踩几个坑是不可能的。这里把我这几年被问得最多的、自己也翻车过的常见问题列成一个速查表,后面按问题逐个展开讲排查方法。
5.1 合并后文件太大,怎么压缩
合并文件体积暴涨,通常是源文件里有大量高清图片。比如CAD导出的PDF,一张矢量图展开成几百KB很正常,图片分辨率过高时体积更夸张。处理方式是合并前或合并后用压缩工具做一次降体积。
我用得最顺手的压缩方案是Ghostscript,一个老牌的开源PostScript/PDF解释器。压缩命令如下:
bash复制gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf input.pdf
这里 -dPDFSETTINGS=/ebook 表示使用ebook档位的压缩质量,适合报告这类以阅读为主的文档。如果追求更高压缩率,可以换成 /screen,但清晰度会肉眼可见地下降。如果你需要保留清晰图表,用 /printer。我用这一套把一份160MB的合并报告压到了不到30MB,页面内容肉眼上几乎无损。
还有一个思路是在合并前控制源文件质量。比如从网页打印的PDF,Chrome打印设置里有“更多设置-质量”可以调节;扫描仪生成的PDF,可以在扫描设置里直接降低分辨率。从源头控制永远好过事后压缩。
5.2 怎么验证合并结果没有缺页、错页
合并完不检查就发出去,等于裸奔。尤其是上万页的文件,错一页就是事故。我的验证流程分为三步:
第一步,用 pdfinfo 命令读取文件的页数和元数据,确认总页数与合并前各文件页数之和一致。命令如下:
bash复制pdfinfo merged_report.pdf | grep Pages
第二步,用qpdf的 --check 做结构完整性检查,这一步能发现文件损坏、交叉引用表错误等问题。
第三步,也是我最推荐的一步,是抽取中间几页做人工抽检。比如400页的文件,我随手打开第1页、第157页、第400页,分别核对一下内容是否在预期位置。用 pdftoppm -f 157 -l 157 把指定页转成PNG图片快速预览:
bash复制pdftoppm -png -f 157 -l 157 merged_report.pdf preview_157
三步走完,基本可以确保万无一失。我见过太多人在大文件合并后直接发出去,领导一打开发现缺了中间的一个章节,这种低级错误在社会上虽然不罕见,但发生在你身上就很尴尬。
5.3 加密报告和扫描件怎么处理
加密PDF分两种情况。一种是“所有者密码”,限制了编辑、打印、复制,但打开不需要密码,这种文件大部分工具可以直接合并但不一定能提取内容。另一种是“用户密码”,打开文件就需要输入密码,这种情况必须先解除密码限制才能操作。
Adobe Acrobat Pro可以直接识别并解除密码限制(前提是知道密码)。qpdf解除密码的方式更加快速:
bash复制qpdf --decrypt --password=你的密码 encrypted.pdf decrypted.pdf
如果遇到的是扫描件(文字无法选中、图层里只有图片),合并和页面提取不受影响,但提取文字和数据就必须要走OCR。关于OCR工具我之前在别的文章里详细写过,核心思路是先用OCR生成带文字层的PDF,再用常规提取工具处理文字层。PaddleOCR对中文支持很好,Tesseract胜在开源无需联网,部署起来也不麻烦。
5.4 合并后字体错乱、乱码怎么办
合并后出现乱码或字体替换,根因通常是源文件中使用了特殊字体,而合并工具无法在目标环境里找到对应字体。Adobe会在这种情况下自动做字体替换,结果可能不是你想要的样子;qpdf这类工具则会直接保留字体引用,如果查看者的系统里没有对应字体,就会显示成方框或乱码。
解决的方案就是提前做好“字体身份检查”。用pdffonts命令列出文件中用到的所有字体:
bash复制pdffonts source_report.pdf
看到输出里有 “AAAAAA+SimSun” 这种带子集前缀的字体,说明文件内嵌了字体子集,通常没问题。看到 “SimSun” 但没有子集前缀、后面还有 “no embed” 的提示,说明字体没有嵌入,合并后大概率会在其他设备上显示走样。
对于没有内嵌的字体,首选方案是在源系统里重新导出PDF,导出时勾选“嵌入所有字体”。如果无法拿到源文件,就用Acrobat的“预检”功能尝试修复,但不能百分百保证效果。这个坑更偏向于前端生成,但从消费端来看,提前发现总比交付后收到退回来要强得多。
5.5 另外一个高频问题:跨表数据想合并怎么办
报告中经常出现“一季度统计表在3页PDF,二季度统计表在7页PDF,Excel里又有各部门分表”这类跨表需求。说句实话,跨表合并并不是纯粹的PDF问题,本质上是“把多个来源的数据结构统一后归并”。我的做法通常是分两步走:先用pdfplumber把每个PDF的表格都提取成CSV,再在Excel或Python里做横向纵向合并。
这里有一个经验值:如果PDF表格结构完全一致(同样的列名、同样的行数),直接纵向堆叠就好;如果不一致,就要先做列名的规范化再合并。碰到打印时分页导致同一表格被切断的情况,还要先识别表头行才能在合并时去除重复表头。这部分工作用Pandas写几十行代码就能完成,属于“看起来复杂、其实都有套路”的类型。
再嘱咐一句:跨表数据合并最忌讳用复制粘贴的方式手动操作。页数少还好,页数一多极易错行漏列,而且一旦出错极难追溯。任何超过3个表的数据归并,我都建议走脚本化处理,哪怕多花十几分钟写代码,也远比分分钟翻车划算。
几个我常用的组合拳,收个尾
最后分享几个我实际工作中固定使用的“组合拳”,你直接拿去用就能省掉很多试错的时间。
处理日常几十页的报告合并,我的方案是:
bash复制# 合并 + 检查
qpdf --empty --pages *.pdf -- merged.pdf
qpdf --check merged.pdf
pdfinfo merged.pdf | grep Pages
处理需交付客户、需要书签的正式标书,我的方案是:
bash复制# 先合并
pdfunite 01_资质.pdf 02_技术方案.pdf 03_商务报价.pdf tender.pdf
# 再压缩
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -dPDFSETTINGS=/printer \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=tender_compressed.pdf tender.pdf
处理带大量扫描件和复杂表格的混合报告,我的方案是:先跑OCR生成文字层,再用pdfplumber把表格提取成CSV,最后用Pandas做数据规整。这套流程大家反馈都还不错,以后有机会单独写一篇从扫描到结构化数据的完整流水线。
这篇文章写到这儿,把我最常用的思路和方法都过了一遍。每一条都是实打实跑过不知道多少遍才沉淀下来的,每个坑也都是真金白银买过的教训。希望你看完能少走几步弯路,手里的PDF报告都能做得又快又稳。
