在日常办公和学习中,PDF大概是最让人又爱又恨的文件格式。爱它是因为跨平台、排版稳定,恨它是因为想转成Word、合并几个文档、删掉一页内容或者给扫描件提个字的时候,正版软件贵得离谱,网上搜出来的“免费工具”不是限次数就是捆绑安装包。我自己处理PDF文件至少有七八年了,从当年在论坛里找破解版软件,到后来满世界试在线转换网站,再到如今电脑里固定装几个开源小工具,踩过的坑确实不少。今天这篇就专门聊免费PDF处理这件事,把我实测过确实能用的网站、工具和操作套路一次性梳理清楚,希望能帮大家少走弯路。
先说清楚这篇文章能解决什么问题。如果你经常需要转换PDF格式、合并拆分文档、给PDF加水印去水印、压缩文件体积、把扫描图片转成可搜索文字,或者单纯只是想找一个靠谱的免费PDF编辑器,那这篇文章非常适合你。我会先从整体思路讲起,说明免费方案和付费软件之间的差距到底在哪,再逐个拆解不同场景下的工具选型,然后手把手带大家走一遍实际处理流程,最后整理一些我真实遇到过的疑难杂症和排查方法。内容不求面面俱到,但每一条都是我亲自验证过的。
1. 内容整体设计与思路拆解
1.1 为什么“免费”两个字值钱但坑也多
PDF处理这个需求,乍一看是个技术活,实际上绝大多数人遇到的情况都差不多:从网上下载了一份扫描版电子书想转成可编辑文本,同事发来几十页的产品手册需要拆成几份发给不同客户,自己做的简历转成PDF后发现有个错别字想改一下,老师发的课题资料是PDF格式想加上自己的批注……这些场景都不需要Adobe Acrobat那样几百块一年的专业授权,但又确实需要一套能应急的工具。
免费方案最大的价值在于零成本解决临时需求。但免费不等于没有代价,最常见的代价是隐私风险、文件大小限制、功能阉割和转换质量不稳定。我在测试大量免费网站后发现,真正能长期稳定使用的在线工具其实不多,很多网站背后都是同一套开源引擎,只不过换了层皮。与其被这些套壳网站反复折腾,不如花点时间把工具按场景分类,知道什么情况下用哪个最靠谱。
1.2 免费工具的三条路线怎么选
目前市面上靠谱的免费PDF处理方案可以归为三大类,每一类的适用场景完全不同。
第一类是纯在线网页工具,比如Smallpdf、iLovePDF、PDF24 Tools这类。优点是无需安装,浏览器打开就能用,跨设备方便,手机电脑都能操作。缺点是文件上传下载依赖网络,大文件容易超时,而且涉及隐私的文件传到别人服务器上总归有点不放心。我的判断是:处理不涉密的普通文档、临时救急用在线工具最合适。
第二类是本地安装的桌面软件,比如PDFgear、福昕阅读器、WPS自带的PDF模块,还有开源的LibreOffice Draw。本地方案的最大优势是文件不出本机、处理速度快、功能通常比在线版更完整,批量处理场景尤其好用。缺点是需要安装,部分软件有捆绑或弹窗,需要仔细选择下载源。
第三类是开源组件和编程方案,主要面向有技术基础的人群。比如用Python的PyMuPDF库批量处理PDF、用itext7做Java项目的PDF生成与加水印、用JsPDF和PDF.js做Web端的预览与导出。这条路学习成本高,但可定制性最强,特别适合反复出现的固定需求。
这三条路线不是互斥的,我自己就是混合使用。日常轻度处理用在线网站,涉及合同、个人信息之类的文件一定走本地工具,批量操作就直接写脚本。下面会针对每一种具体场景细致拆解。
1.3 认清免费工具的边界
在开始推荐工具之前,有必要把话说透:免费工具能解决90%的日常需求,但不等于能完全替代付费产品。我在实际使用中感触最深的是三个差距。
第一是复杂编辑能力的差距。想要像编辑Word一样自由调整PDF里的文字位置、字体颜色、插入高亮注释,免费工具普遍做不到或很难做。PDF是一种以排版定位为核心的文件格式,它的本质是“像是在哪张纸的哪个位置画了什么东西”,要想原生地修改文字,需要软件理解文本流和矢量图形结构,这种技术门槛让绝大多数免费产品望而却步。
第二是批量处理性能的差距。免费在线工具通常对文件页数、大小和上传次数都有限制,比如单文件不超过50MB、每天只能处理5次之类。本地免费软件虽然不限次数,但处理超大文件或上千页的文档时,性能明显不如商业产品。
第三是识别精度的差距。不说国外OCR引擎,就是中文OCR这一项,免费方案和商业方案就有肉眼可见的差异。比如我用免费的Tesseract OCR处理手机拍的书页照片,识别率在85%左右,碰上复杂的排版和图表就只能干瞪眼。而商业OCR工具内置了深度学习模型,版面分析能力明显更强。
清楚了这些边界,选择工具时就不会有不切实际的期待,用起来心态也会好很多。
2. 核心细节解析与实操要点
2.1 PDF转Word,效果好的工具到底怎么挑
“PDF转Word”是绝对的高频刚需。热搜词里csv、文案、论文、招标文件,都会涉及这个操作。但很多人不知道的是,PDF转Word的转换质量差异极大,关键取决于PDF本身的属性。
PDF文件分为两种类型。第一种是“原生PDF”,也就是从Word、WPS、InDesign等编辑软件直接导出的,里面的文字本身就是可选的文本,转换时只需要把文字流和排版结构重新映射成Word格式,准确率可以做到非常高。第二种是“扫描版PDF”,本质是图片拼合,没有任何文字层。这种必须先做OCR识别,把图片里的文字“认”出来,再生成可编辑文本。
针对第一种PDF,我最推荐的免费方案是WPS Office自带的PDF转Word功能。注意要点是:转换前先在WPS里打开PDF文件,然后用菜单栏的“输出为Word”功能,这样转换会调用本机处理,比上传到云端更可靠。实测下来,对常见的中文排版文档,还原度能到95%以上,表格、图片、页码基本都能保留。
针对第二种扫描版PDF,唯一的免费正路是先OCR后转换。在线工具里我实测过Smallpdf和iLovePDF的OCR转Word,对清晰的印刷体中文识别效果尚可,但对模糊扫描件和复杂版面会翻车。本地方案里,Adobe的在线OCR服务虽然是免费的,但限制次数且需要登录;更好用的是开源软件PaddleOCR配合PyMuPDF脚本自己处理,虽然要敲几行命令,但效果稳定且完全免费。实操时我一般这样处理扫描件:先用PaddleOCR把PDF里每一页转为带坐标的文本块,再用脚本把文本块按页拼装成Word文档。这条路线入门门槛确实高,但熟练之后处理几百份纸质资料扫描件特别高效。
2.2 PDF合并与拆分,最不起眼却最容易翻车
合并PDF应该是使用频率最高的操作之一。你从不同渠道收集了几份材料,想合成一个完整PDF交上去,或者把几章电子书拆开方便阅读,这些都属于基本操作。
在线合并工具里,PDF24 Tools的合并功能是我最常推荐的。原因是它支持直接拖动调整页面顺序,还能可视化预览每一页缩略图,在合并前就能发现哪些页面重复或者顺序不对。Smallpdf的合并功能也不错,但免费版有文件大小限制,超过10MB就得排队等好几分钟。iLovePDF的合并效果同样好,只是界面偶尔会有广告干扰,需要注意别点错按钮。
不过这里必须提醒一个容易踩坑的地方:合并PDF不仅仅是把文件首尾相连那么简单。如果各个PDF文件的安全权限设置不同,有些页面加密了,有些没加密,合并不当会导致整个文件无法打印或复制。另外,如果不同PDF的页面尺寸不一致(比如一本是A4,另一本图片扫描出来是B5),合并后的排版会很别扭。应对办法是:合并前先统一页面尺寸。本地免费软件PDFgear提供了“页面标准化”功能,可以先把所有文件转换到同一尺寸再合并。
拆分的需求通常是想从几十页的大文件里抽出来几页。在线工具处理拆分同样容易出问题,尤其是带书签标签的长文档。我遇到过不少次拆分后书签丢失的情况,导致文件虽然拆开了但目录结构全乱了。如果对文档结构有要求,建议用本地工具Adobe Acrobat的试用版或者PDFgear来拆,操作逻辑上要好很多。
2.3 压缩、去水印与加水印,细节决定成败
这三件事看着简单,实际上藏着不少坑。
先聊压缩。PDF的压缩率取决于文件类型的组成。纯文字型PDF本身已经很小,怎么压都压不了多少;图片型PDF才是体积大户,压缩的核心其实是调整图片的分辨率和编码质量。在线压缩工具里,Smallpdf的压缩效果中等偏上,iLovePDF有“强力压缩”选项,实测可以把150MB的扫描件压到35MB左右,但肉眼能看出画质损失。需要无损压缩的话,我推荐本地工具Ghostscript,命令行一条指令搞定。它的压缩原理是通过重写PDF内部对象结构来去除冗余,效果相当稳定。命令大概长这样:
gswin64c -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf input.pdf其中/ebook参数表示中等压缩比,适合阅读和打印,如果追求更小体积可以用/screen参数。这个命令在网上搜索Ghostscript安装包就能找到,如果你不想折腾命令行,那就用PDFgear自带的压缩功能,效果也够日常使用。
再说去水印。这是被问得最多的话题之一,热搜词里大量出现“pdf免费去水印”。我要先说清楚一个常识:去水印分两种情况。一种是给自己文档加的自己的水印反复调整,想重新生成一份干净的版本,这完全合法合理;另一种是想去掉别人PDF里的版权声明水印,这在多数情况下涉及侵权,我不建议大家做。
对于第一种情况,最干净的办法不是“擦涂”,而是回到源文件重新导出。如果实在没有源文件,又确实有清除水印的需求,免费方案里可以试PDFgear的“红action区”擦除功能,或者PDF24 Tools里的“去除标记”工具。但要注意,擦除水印本质是用白色矩形盖住水印区域,如果页面背景不是纯白色(比如是扫描的图书底色),盖完之后会留下一块明显色差。遇到这种情况,可以用图片处理软件先把底色统一成白色,再做擦除操作。这个过程比较繁琐,但没有更好的免费捷径。
最后说加水印,这个其实更常见。给公司文档加“内部资料”字样,或者给合同加“仅供投标使用”的标注,都是日常刚需。免费方案里,LibreOffice的“导出为PDF”选项自带水印功能,可以在导出时自动加上按对角线排布的重复文字水印。另一条路是用Python脚本给PDF批量加水印,开源库PyMuPDF提供了非常轻量的API,几十行代码就能完成按指定位置、角度、透明度添加文字水印。我自己是在离职交接时写过一个脚本,后来就一直用着,批量处理几十份文件几秒钟就跑完了。
2.4 OCR识别与图片型PDF的后期处理
热搜词里出现了“pdf图片中文设置”“c# ocr pdf”这类词,说明很多用户有处理图片型PDF的需求。
图片型PDF有一个明显痛点:不能搜索。你明明记得某页上有某个关键词,但Ctrl+F什么都搜不到,只能手动一页页翻。这就要用到OCR工具。
免费OCR方案我实测过三条路。第一条是手机端的扫描全能王免费版,它每天有免费识别额度,日常使用够了,但处理大量文件就不行。第二条是在线OCR网站,随便搜“PDF OCR在线”就能找到不少,试来试去效果都一般,而且上传敏感文件风险大。第三条是我最推荐的开源方案:使用PaddleOCR。它支持中英文、印刷体识别率高、对版面分析能力也不错。配合PDF转图片工具(比如pdf2image库),可以把扫描版PDF拆成图片,逐页识别,再合并成带文字层的PDF。
带文字层的PDF是OCR的正确打开方式。它解决的不只是搜索问题,还能让文字可以被复制、被语音朗读、被屏幕阅读器识别。对有阅读障碍的朋友、以及需要从论文里大段引用的人来说,这个功能简直是福音。做一个带文字层的PDF不需要重新排版,识别出来的文字层是“隐形”的,只是覆盖在原图之上,视觉上完全看不出区别。工具链上,GitHub上有现成的开源项目OCRmyPDF,一条命令把扫描版PDF转换成带搜索文字的PDF,内置了Tesseract引擎,基本就是为这个需求量身定做的。命令示例:
ocrmypdf input_scanned.pdf output_searchable.pdf -l chi_sim-l chi_sim参数是简体中文语言包,如果你处理的是繁体文档就换成chi_tra。这个工具我在处理学校发的教材扫描件时用过很多次,效果完全碾压那些在线OCR网站。
2.5 网页端显示PDF,前端开发者该怎么处理
热搜词里有一条“vue image能显示pdf吗”,一看就是前端开发者在项目里遇到了需求。这里简单回答一下:<img>标签确实不能直接显示PDF,PDF不是位图格式,浏览器默认的PDF渲染方式是用它自己的内置插件处理,前端如果想让用户在页面里直接预览PDF,有几种标准做法。
最轻量级的是使用iframe或者<embed>标签,直接把PDF文件的URL塞进去,让浏览器自带的PDF阅读器接管页面。这个方案代码最少,但样式不可控,不同浏览器的工具栏位置和按钮都不一样。
想完全掌控交互体验的话,推荐开源库PDF.js。它是Mozilla团队维护的,核心功能就是把PDF文件在Canvas上逐页渲染出来,前端可以自由定制翻页按钮、缩放比例、缩略图栏,甚至连文字选择、高亮注释都能实现。我用Vue项目里集成过,配合pdfjs-dist这个npm包,大概几十行代码就能做出一个简易PDF阅读器组件。
有一点要提醒的是,PDF.js渲染大文件时性能开销不低,尤其是在移动端。如果PDF文件动辄50MB以上,建议先压缩或分页加载,否则会导致页面卡死。热搜里提到的“vue image能显示pdf吗”还有一层潜台词可能是“我想在列表页显示PDF的预览图”,这个可以用PDF.js将第一页渲染成缩略图,输出成base64图片再挂到列表上,完全可行。
3. 实操过程与核心环节实现
3.1 从0到1完成一次PDF转Word实战
把我日常用得最多、最标准的流程写出来,大家可以照着操作。
第一步,判断自己手里的PDF是原生还是扫描版。打开PDF后随手按Ctrl+F,随便搜一个词,如果能搜索并高亮出来,那就是原生PDF;如果提示没有找到或不能搜索,那就是扫描版。
第二步,按类型选工具。原生PDF,直接打开WPS,然后选择“会员专享”里的PDF转Word,或者用PDFgear的“转换”菜单。如果是扫描版PDF,先下载安装OCRmyPDF(按GitHub上的文档,在终端里用pip install ocrmypdf就能装),把扫描件自动加文字层,然后再按原生PDF的方法转Word。
第三步,转换后检查细节。这一步最容易被人忽略。转完的Word文件先别急着用,重点检查三件事:表格是否变形、图表是否偏移、页眉页脚的页码是否错位。原因是PDF转换本质上是在猜测原始排版结构,复杂元素经常出错。发现问题后,调整Word里的文本框位置和浮动属性,一般几分钟就能修好。
我自己实测下来,一份30页的标准论文,从原生PDF转Word,整个过程包括检查和修正,大概需要15分钟。如果转出来乱码多到没法修,也不要太沮丧,有时候PDF源文件的字体子集嵌入有问题,这种基本无解,只能打印出来重新扫描再OCR。
3.2 批量合并PDF,写一个能用很久的脚本
如果需要合并的PDF文件很多,或者经常要合并,建议直接在本地搭建一个自动化工作环境。
我在Windows上常用的方案是安装正版的PDFsam Basic,这是开源项目PDF Split and Merge的基础版,界面简洁,免费,能合并、拆分、旋转、提取页面。正常使用不需要任何配置,把文件拖进去调整顺序,导出即可。
如果会更进阶一些,想用命令行批量处理,那就用Python的PyMuPDF。下面这段代码我制作了很久,在带宽充足的情况下处理几十个文件很快:
import fitz def merge_pdfs(file_list, output_path): merged = fitz.open() for pdf_file in file_list: with fitz.open(pdf_file) as src: merged.insert_pdf(src) merged.save(output_path) merged.close() if __name__ == "__main__": import glob files = sorted(glob.glob("*.pdf")) merge_pdfs(files, "merged_result.pdf")这段脚本的核心逻辑是逐一遍历文件列表,用insert_pdf方法把每个源文件的全部页面插入目标文档,最后统一保存。它不需要安装复杂的依赖,只要先跑一遍pip install PyMuPDF就能直接用。配合Windows任务计划程序,甚至可以做到每晚自动合并指定文件夹里新增的PDF。
3.3 PDF加水印、压缩与OCR的组合拳
真实工作里,文件往往要多步处理。比如要给一个扫描版文件压缩体积、加“内部资料”水印,同时让它支持文字搜索。这个过程我整理成一个固定流程。
先用OCRmyPDF把扫描版转成可搜索PDF,这一步同时也会做一层轻度压缩,因为OCR引擎会把无用的背景噪声清理掉。然后用PyMuPDF脚本加上水印,文字内容、位置、角度都可以在脚本里调整:
import fitz def add_watermark(input_pdf, output_pdf, watermark_text): doc = fitz.open(input_pdf) for page in doc: width = page.rect.width height = page.rect.height page.insert_text( fitz.Point(width*0.5 - 50, height*0.5), watermark_text, fontsize=30, fontname="china-s", color=(0.5, 0.5, 0.5), rotate=45 ) doc.save(output_pdf) if __name__ == "__main__": add_watermark("input.pdf", "final_with_watermark.pdf", "内部资料")最后如果需要进一步压缩,再调用Ghostscript的/ebook参数。三步操作在命令行里依次执行,完全免费,实测一个100页的扫描版教材,原本180MB,经过OCR加水印压缩后能降到40MB左右,同时还能全文搜索。
3.4 前端页面集成PDF预览功能的实现案例
如果你正在写Vue或React项目,需要在页面里展示PDF,我给你一份可以直接改用的思路。
核心依赖是pdfjs-dist,在项目里安装好后,主要逻辑分四步:加载PDF文件、获取页面对象、渲染到Canvas、处理翻页。我把典型代码写出来供参考:
import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.min.mjs'; pdfjsLib.GlobalWorkerOptions.workerSrc = 'path/to/pdf.worker.min.mjs'; const loadingTask = pdfjsLib.getDocument({ url: pdfUrl }); const pdf = await loadingTask.promise; const page = await pdf.getPage(pageNumber); const viewport = page.getViewport({ scale: 1.5 }); const canvas = document.getElementById('pdf-canvas'); const context = canvas.getContext('2d'); canvas.width = viewport.width; canvas.height = viewport.height; const renderContext = { canvasContext: context, viewport: viewport }; await page.render(renderContext).promise;有几个容易踩坑的细节。一是worker文件路径必须正确配置,否则会报“No GlobalWorkerOptions.workerSrc specified”错误。二是scale参数决定了清晰度,1.5倍的渲染效果在普通屏幕上很清晰,在苹果的Retina屏上最好设置成2倍。三是跨域问题,PDF文件如果存放在不同的域名下,需要对方允许跨域访问,否则getDocument会直接加载失败。
这套方案我在内部管理系统里给用户预览合同文件用过,体验上已经接近原生阅读器了。实际项目里还想更高级一点,就自己做一个缩略图侧边栏,把所有页面用一个循环渲染成小Canvas,点击缩略图跳转到对应页,视觉效果和交互体验都会加分。
4. 常见问题与排查技巧实录
4.1 转换出的Word乱码,真正原因是什么
碰到乱码先别怪工具垃圾,多半是源PDF的字体有问题。PDF文件本身可以不嵌入字体,也可以只嵌入字体的部分子集,这种情况下其他软件没有可用的字体映射表,自然就乱码了。
如果你有源字体,可以在转换前先把PDF里的字体替换为标准中文字体,操作方法是打开打印机的虚拟PDF功能重新“打印”一遍PDF,让系统重新嵌入已安装的字体。这个过程在Windows下就是选择“Microsoft Print to PDF”打印机,把原PDF再走一遍打印流程,输出一个新PDF,转Word的成功率会显著提升。
另一种处理方式是用在线转换工具,它们通常会根据中文语言环境自动补字体,Smallpdf对乱码的处理就比本地软件好一些。我的建议是:本地转换乱码,在线网站再试一次,两者都乱码,那就用OCR方案彻底放弃排版还原。
4.2 合并后的PDF文件顺序乱了,还能挽回吗
合并时顺序乱了其实不用重新合并。PDF不只是文档,还是一种容器结构,页面顺序信息是记录在底层的页面树上的。只要原始文件没有加密保护,任何PDF编辑器都能调整页面顺序。
推荐用PDFsam Basic里的“重新排列”功能,把页面缩略图按需要的顺序排列,然后导出。也可以直接在PDFgear里拖动页面,响应速度快,操作直观。有一次我合并了一个43页的文件,在第三步拖错了文件顺序,整个合并结果乱了,我就用这个方法几分钟就调整回来了,完全没有重新来一遍。
不过这里有一个额外的坑:如果乱序的文件已经被保存、关闭又打开,某些在线工具会自动压缩重写一次,导致页面树信息被重建,原始的调整余地变小。所以建议合并之前先在草稿模式下确认顺序,不要急着保存。
4.3 压缩后图片模糊,如何兼顾体积和清晰度
这是一个质量与体积的博弈问题。无论用什么工具压缩PDF,本质都是在砍图片的细节信息。区别只在于砍多少以及用何种算法砍。
Ghostscript的/ebook和/screen参数就是两档压缩策略,前者保留120dpi左右的清晰度适合打印,后者压到75dpi左右适合屏幕阅读。如果你先压到/screen发现太模糊,那就升级成/ebook再试一次。如果还想再精细一些,可以手动指定图片像素密度参数,比如在Ghostscript命令中加入-dDownsampleColorImages=true -dColorImageResolution=150,让压缩器单独控制彩色图片的目标分辨率。
我个人的经验是:如果是自己存档用的文档,用/ebook档就够了;如果是发到群里大家传阅的临时文件,/screen档大家看着也不费劲。关键是要明确自己的使用场景再决定压缩档次。
4.4 浏览器打开PDF变成下载而不是预览,该怎样改默认行为
这个问题也经常有人问。在Windows系统上,PDF默认是用Edge打开的,但不管哪个浏览器,打开PDF文件的行为都受文件响应头的控制。如果是本地双击文件,看的是系统的默认文件关联;如果是网页端点击链接,看的是服务器返回的Content-Type和Content-Disposition头。
本地文件想改成别的软件打开,直接在文件上右键,选“打开方式”,再选“选择其他应用”,勾选“始终使用此应用打开.pdf文件”。如果你的机器上装了福昕、PDFgear或WPS,它们会出现在候选列表里。
网页端想要预览而不是下载,就需要服务器配合。比如在Nginx配置里,如果希望PDF在浏览器内打开而不是强制下载,可以把响应头设置成add_header Content-Disposition "inline";而不是attachment。对开发者来说,这是一个小坑但也很典型。
4.5 处理PDF时提示“文件已损坏或加密”,有没有免费解救办法
遇到这个提示,先别急着删文件。很多时候PDF的尾部没有正确结束,文件本身可能不完整,或者是从网页上右键另存时没能下载完全。这种情况最轻的补救方法是用浏览器重新打开PDF URL,看是否能正常显示,如果能显示,说明原始文件没坏,只是下载过程出了问题。
如果原始文件确实损坏了,免费工具里只有少数能修复PDF结构。AutoCad的图纸工具不行,但我实测过Recover PDF Tools这款小工具,它能重建中轻度损坏的PDF。重度损坏的,就别费劲了,找源文件重新生成吧。
还有一类情况是PDF带权限加密:能打开但禁止打印、禁止复制。免费的PDFgear可以移除一部分权限设置,但如果PDF被设置了口令密码,那就只能靠用户输入口令来解锁。这类问题我没什么好解法,法律和安全上也不适合在这里多聊。
5. 一些值得长期使用的免费资源清单
5.1 在线网站简明对照表
我把反复测试过、相对靠谱的免费在线工具整理成一份清单。注意在线工具讲究“能看广告不能用”,任何要求先下载客户端才能使用的网站,一律不要碰。
| 工具名称 | 推荐功能 | 免费限制 | 备注 |
|---|---|---|---|
| PDF24 Tools | 合并、拆分、压缩、转换、OCR | 无文件大小限制,免费 | 功能最全,界面清爽 |
| iLovePDF | 合并、压缩、转Word、加解密 | 部分功能有次数限制,有广告 | 中文界面完善 |
| Smallpdf | 转Word、转Excel、压缩、合并 | 每天免费处理次数有限 | 云端处理,速度时快时慢 |
| TinyWow | OCR、转格式、PDF编辑 | 免费次数多,但有弹窗广告 | 后台是综合引擎,经验证可用 |
| Adobe Connect免费版 | 在线OCR、导出Word | 需登录Adobe账号,限制次数 | 扫描版OCR效果较好 |
选择建议是:日常合并、拆分、压缩首选PDF24;转Word首选WPS本地而非在线,非要用在线就上Smallpdf;OCR扫描件首选Adobe在线版,其次是TinyWow。
5.2 本地免费软件推荐
本地软件我按放心度和功能完整度排个序。PDFgear是我的首选,它对个人用户完全免费,支持编辑、合并、压缩、OCR,界面类似MS Office风格,没有捆绑安装,对于不想折腾的用户很友好。其次是WPS Office,它虽然不是专业PDF工具,但内建的PDF模块日常够用,而且你大概率已经装了。再次是LibreOffice,开源办公套件里的PDF处理功能比想象中强,导出和编辑都能用。
如果愿意用命令行工具,我再推荐两个。Ghostscript是PDF压缩和格式转换的神器,上面已经提过。QPDF则是PDF结构级的瑞士军刀,合并、拆分、加密、解密、修复损坏文件,一条命令搞定。这两个工具都有Windows安装包,GitHub上也持续在维护。
5.3 开源开发工具链汇总
如果你是开发者,需要用代码处理PDF,推荐按需选用这些开源库:
- Python:PyMuPDF(读取、编辑、加水印)、pdfminer.six(纯文本抽取)、reportlab(生成PDF)、Borb(PDF文档结构解析)
- Java:itext7(生成、加水印、HTML转PDF)、Apache PDFBox(文本提取、表单操作)
- JavaScript:PDF.js(浏览器渲染预览)、pdf-lib(生成和修改PDF)、jspdf(前端生成PDF文件)
- 命令行工具:OCRmyPDF(扫描版加文字层)、QPDF(结构级操作)、Ghostscript(光栅化和压缩)
这套工具链全部免费且成熟,覆盖了从生成、转换、编辑、OCR到Web展示的所有环节。搜索引擎里那些收费的SDK,功能基本都是这些开源库的包装。我自己做项目时,能用开源库解决的绝不上商业产品。
关于PDF处理,我这些年积累了一个感受:真正困难的从来不是找到工具,而是判断手里的PDF文件“是什么类型”以及“目标效果必须满足什么条件”。类型判断对了,工具选型就顺理成章;条件明确,就不会在一个免费网站失效后像无头苍蝇一样到处找替代品。上面列出的在线工具我不敢保证永久免费,毕竟在线服务的商业模式经常调整,但本地软件和开源脚本只要你装了、存了,就永远是自己的。建议大家都把PDFgear和PDF24 Tools这两个收藏好,再抽时间把PyMuPDF的脚本跑通一遍,之后遇到再奇怪的PDF处理需求,心里都不会慌了。