免费 PDF 转文本工具
立即从 PDF 文件中提取所有文本内容。下载为 TXT 或复制到剪贴板。您的文件永远不会离开设备。
支持 PDF · 最大 50 MB
使用方法
- 上传 PDF: 拖放或选择一个 PDF 文件以提取文本。
- 配置选项: 选择页面分隔符样式以及是否包含页码。
- 提取文本: 点击"提取文本"以处理 PDF 并显示内容。
- 下载或复制: 将提取的文本复制到剪贴板或下载为 TXT 文件。
为什么要提取 PDF 文本?
将 PDF 文本转换为纯文本对于处理文档内容、在 PDF 中搜索、将数据导入其他应用程序、创建文本内容备份或分析文档文本非常有用。此工具会提取所有文本并保留阅读顺序,非常适合报告、研究论文、合同和其他文本密集型文档。
功能
- 完整提取: 从 PDF 的每一页中提取所有文本。
- 灵活格式: 选择页面分隔符并包含或排除页码。
- 快速复制: 一键将提取的文本直接复制到剪贴板。
- 下载为 TXT: 将提取的文本保存为纯文本文件以供日后使用。
- 统计信息: 查看提取文本的页数、字符数和字数。
- 隐私: 所有处理都在您的浏览器本地进行。文件从不上传到任何服务器。
- 快速: 即时提取,无需等待或排队。
常见问题
我可以从扫描的 PDF 中提取文本吗?
此工具可以从包含可选文本的 PDF 中提取文本。扫描的 PDF(基于图像)不包含可提取的文本,需要 OCR(光学字符识别),此工具不提供。对于扫描文档,请先使用 OCR 工具。
文件大小限制是多少?
支持最多 50 MB 的文件。较大的文件可能会根据浏览器的可用内存运行,但提取速度会较慢。
该工具是否保留格式?
提取的文本是纯文本,因此粗体、斜体和颜色等格式不会保留。但是,文本内容和顺序会尽可能准确地保留。
我可以在手机上提取文本吗?
可以。此工具在桌面、平板电脑和移动浏览器上均可使用。只需点击选择 PDF 文件并提取文本即可。
我的 PDF 会上传到服务器吗?
不会。所有文本提取都使用 PDF.js 在您的浏览器本地进行。您的 PDF 永远不会离开设备,确保完全的隐私和安全。
我可以从受密码保护的 PDF 中提取文本吗?
可以,如果 PDF 受用户密码(而非所有者密码)保护。您需要先使用其他工具移除密码,然后使用此工具提取文本。
什么是PDF文本提取器?
PDF文本提取器将PDF文档中的嵌入文本提取为可以粘贴到任何地方的纯UTF-8文本。结果只是字符:没有字体、没有颜色、没有版式。这与OCR(光学字符识别)有根本区别,OCR是读取图像中的像素并猜测它们代表什么字母。提取是直接从PDF的内容流中读取文本,因此它是精确且即时的;OCR是近似且缓慢的。
提取之所以有效,是因为大多数PDF将文本存储为定位的字形操作符(Tj用于单个文本字符串,TJ用于带调整的数组),并附带页面上的x和y坐标。提取器遍历每页的内容流,收集每个带位置的字形操作符,并重新组装阅读顺序。对于直接的散文,这基本上是完美的。对于多栏版式、脚注和复杂表格,提取器依赖启发式算法,大多数情况下有效但可能产生意外。
此工具使用pdf.js,这是Mozilla在2011年启动并随Firefox一起发布的JavaScript PDF渲染器。一切都在您的浏览器中运行:PDF文件加载到内存中,在本地解析,文本在您的机器上提取,结果显示在您可以复制或下载的文本区域中。没有文件上传到服务器。该库可处理PDF 1.0到PDF 2.0(ISO 32000-2)以及大多数现代加密方案。
工具内部有什么
工具顶部是一个拖放区:点击选择PDF文件或从文件管理器拖入。50 MB的上限是一个舒适的浏览器内存限制;pdf.js可以处理更大的文件,但一旦文档超过几百页,提取速度就会变慢。文件加载后,信息面板会显示文件名、页数和文件大小,以便您确认选择了正确的文档。
文件信息下方有两个提取选项。包含页码切换是否将每页的页码添加到提取的文本中。页面分隔符让您选择页面如何分隔:带标签的横条(--- 第3页 ---)、空白行、显式的[PAGE BREAK]标记,或完全没有。空白行选项最适合重新导入写作工具;带标签的横条最适合浏览长文档。
点击提取文本,工具会循环遍历每一页,提取文本内容,应用您的分隔符设置,并将结果转储到下方的文本区域。统计信息出现在下方:处理的页数、总字符数、总字数。两个按钮让您将结果复制到剪贴板或下载为.txt文件。输出是纯UTF-8,可以粘贴到笔记、电子邮件、电子表格或代码编辑器中。
历史与背景
PostScript和可打印页面问题(1982年)
约翰·沃诺克和查克·盖什克离开施乐PARC,于1982年创立了Adobe。他们的第一个产品是PostScript,一种页面描述语言,可以使用一小套绘图操作符(移动、线条、曲线、填充、放置字形)描述任何可打印的页面。PostScript让任何打印机都能精确复制任何页面,但它是为打印而设计的,不是为查看或编辑。PostScript是PDF后来构建的技术基础。
PDF 1.0和Acrobat(1993年)
1991年,沃诺克在Adobe内部传阅了一份名为Camelot的论文,描述了一种衍生自PostScript但针对屏幕查看和随机页面访问优化的便携式文档文件格式。第一次公开发布是1993年6月15日的Acrobat 1.0和PDF 1.0。早期采用很慢:查看器要收费,文件很大。Adobe在1994年免费提供Acrobat Reader,该格式在1990年代后期通过表单、技术手册和政府文档而流行起来。
PDF/A用于长期存档(2005年)
PDF/A于2005年10月作为ISO 19005-1发布。它是为存档设计的PDF的受限子集:没有外部依赖(所有字体嵌入)、没有JavaScript、没有加密、没有音频或视频。重点是50年后打开的PDF/A文件看起来与今天完全相同。大多数国家档案馆、法院和企业记录系统都要求长期存储使用PDF/A。从PDF/A中提取文本异常可靠,因为该格式强制要求ToUnicode字体映射。
PDF成为ISO标准(2008年)
Adobe在2008年将PDF规范的控制权交给了国际标准化组织。ISO 32000-1:2008将PDF 1.7编纂为开放的国际标准。从那时起,任何人都可以实现完全符合规范的PDF阅读器,而无需向Adobe许可PDF。ISO 32000-2在2017年(PDF 2.0)跟进,为更新的功能(如更好的数字签名和HDR渲染)添加了原生支持。
pdf.js开启了浏览器内PDF查看器(2011年)
Mozilla的安德烈亚斯·盖尔在2011年中作为实验项目启动了pdf.js,仅使用HTML5、JavaScript和Canvas渲染PDF文档。在pdf.js之前,在浏览器中查看PDF需要插件(Adobe Reader插件、Foxit或类似插件)。pdf.js使原生基于浏览器的PDF查看成为可能。Mozilla在2013年2月将其捆绑到Firefox 19中,消除了任何PDF插件的需要。这就是此提取器使用的库。
Chrome发布PDFium(2014年)
谷歌在2014年5月将PDFium开源。PDFium是一个不同的PDF引擎,源自商业Foxit PDF SDK,它为Chrome和Edge中的PDF渲染提供支持。PDFium用C++编写;pdf.js用JavaScript编写。从提取的角度来看,两个引擎产生类似的文本,但PDF/A和表单处理支持有所不同。此工具使用pdf.js,因为它在任何浏览器中原生运行,无需插件或编译的二进制文件。
实用工作流程
从研究论文中提取引用
拖入PDF,点击提取,滚动找到您想要的段落,并将其复制到笔记或引用管理器中。单栏论文输出整洁。两栏论文(会议和期刊风格的典型)可能会交错左栏和右栏的文本;在这种情况下,手动复制每一栏而不是依赖全局提取。对于长引用,首选空白行页面分隔符,以便段落分隔得以保留。
在合同中搜索特定条款
法律合同通常长达数百页,PDF阅读器的内置搜索会遗漏上下文。提取全文,粘贴到文本编辑器中,并使用查找或grep与更大的上下文窗口(前后5行)。这比滚动更快,让您可以为模式编写正则表达式,如所有提及责任或终止的条款。保留带标签的页面分隔符,以便定位PDF中的原始位置。
为写作或翻译项目批量提取文本
当您需要翻译、改写或总结长PDF文档时,第一步是获取原始文本。提取一次,保存.txt文件,并从那里工作。避免直接从PDF阅读器复制,这通常会在错误的地方引入换行符,并在页面边界处断字。空白行分隔符作为翻译工具或LLM的输入效果很好。
将收据导入电子表格
通过电子邮件发送的现代收据和发票通常是带有嵌入文本的PDF,而不是扫描件。提取,然后用正则表达式解析总数。对于重复的格式(每月发送相同发票布局的供应商),五行脚本可以自动将日期、总数和税务字段提取到电子表格中。扫描的收据不起作用;那些需要先进行OCR。
在错误的设备上阅读电子书
PDF是电子阅读器的糟糕格式,因为页面大小是固定的;文本不会重排。提取文本,粘贴到EPUB转换器中,现在书籍可以在任何屏幕上重排。页码和脚注可以在转换前手动剥离。这个技巧最适用于出版商仅发布PDF的技术书籍和会议记录。
以纯文本形式分享会议记录
当同事以PDF形式发送会议记录,您想将摘要粘贴到Slack或维基中时,先提取。文本输出整洁,您可以粘贴任何部分而没有奇怪的字体伪影或隐藏的格式。对于有行动项的会议记录,带标签横条页面分隔符有助于在后续出现问题时定位原始文档部分。
常见陷阱
扫描的PDF产生空输出
如果PDF是通过扫描纸质文档(平板扫描、手机照片或复印机输出)创建的,它包含页面的图像,而不是底层文本。提取器遍历内容流查找文本操作符但找不到,因此输出为空,或仅包含手动输入的零散页码。解决方案是先通过OCR运行PDF(如Tesseract、Adobe Acrobat的识别文本或ABBYY FineReader等工具),它会添加一个隐藏的文本层,此工具随后可以提取。
多栏版式可能交错文本
学术期刊、杂志和报纸通常每页使用两栏或三栏。pdf.js按文本运行在页面上的位置提取每个文本运行,并使用启发式算法重建阅读顺序,但这些启发式算法假设单栏流。多栏页面的结果可能是:左栏第一行、右栏第一行、左栏第二行,依此类推。对于这些版式,一次提取一页并目测选择栏,或使用对版式敏感的工具,如Python的pdfplumber库。
自定义字体编码产生乱码
PDF可以使用任何字体,字体可以将其字形ID映射到作者选择的任何字符代码。PDF/A和大多数现代PDF都包含一个ToUnicode映射,表示字形5代表字母A,但较旧或粗糙的PDF有时会跳过映射。没有ToUnicode,提取的文本是原始字形ID(通常显示为方框、数字或随机字母),如果不进行OCR,就无法恢复原始字符。如果只有特定单词看起来错误,原因通常是单个嵌入字体缺少ToUnicode。
连字可能提取为组合字符
专业排版将某些字母对(fi、fl、ff、ffi)组合成称为连字的单一字形。PDF可能将连字存储为Unicode码点U+FB01(fi连字),而不是两个字母f和i。提取的文本包含连字码点,大多数编辑器正确呈现,但某些文本处理工具会卡住。如果您将输出输入到搜索索引或自然语言工具中,请运行一行替换将U+FB01规范化为fi,将U+FB02规范化为fl。
页眉和页脚在每页上重复
大多数PDF在每页上都有一个运行的页眉(章节标题、文档标题)和页脚(页码、版权行)。提取器会捡到它们,因为它们是页面上的真实文本,您最终会在200页文档中得到同一行重复200次。解决方案是一个简单的去重脚本或提取后手动查找替换。对于长文档,这有时是最大的清理步骤。
数学方程式和公式很少干净地提取
数学使用来自特殊符号字体(Computer Modern、STIX)的单个字形定位。提取器读取字形但失去使x平方不同于x乘以2的空间关系。E等于mc平方等内联方程式输出乱码,显示方程式输出为打乱的符号序列。对于大量数学的PDF,使用保留方程式结构的工具(MathPix snip、Adobe Acrobat Pro带方程式重排),或将方程式提取为图像。
隐私和数据处理
您拖入工具的PDF文件始终保留在您的设备上。pdf.js是在您的浏览器中运行的JavaScript库,不是在远程服务器上。文件由您的浏览器加载到内存中,逐页解析,提取的文本显示在同一页面的文本区域中。我们从不上传文件,从不记录其内容,从不分析它。这很重要,因为PDF经常包含机密信息:合同、医疗记录、法律通信、财务报表。
页面加载后,工具离线工作。您可以断开互联网连接,拖入PDF,提取它,并复制结果,而您的数据从未触及另一台机器。提取的文本只有在您选择自己粘贴或发送到某处时才会离开您的机器。许多SaaS PDF提取器将您的文件发送到云服务进行处理;对于敏感文档,这正是您想要避免的。
何时不应使用此工具
扫描或仅图像PDF(需要先进行OCR)
如果您的PDF是纸张扫描或一系列照片,则没有嵌入的文本可提取;此工具返回空结果。先通过OCR引擎运行PDF以添加文本层:Tesseract(免费、命令行、对英语和拉丁文字非常好)、Adobe Acrobat Pro(付费、最佳版式保留)或ABBYY FineReader(付费、最适合非拉丁文字和复杂文档)。OCR后,此提取器将正常工作。
带字段值的可填充PDF表单
PDF表单将字段值(您在姓名字段中输入的文本、复选框的选中状态)与静态页面文本分开存储。此提取器仅读取静态页面文本,因此会遗漏表单值。要提取表单数据,请使用直接读取AcroForm或XFA字典的PDF表单库(pdftk、Adobe Acrobat导出数据或python-pdfplumber的form-field API)。
当您需要保留格式时
纯文本会丢失所有格式:粗体、斜体、列表、表格、标题、颜色、字体。如果您需要保留版式的可编辑文档,请改用PDF转Word转换器(它构建带有段落样式和表格的结构化Word文档),或PDF转HTML以获得适合网络的输出。PDF转文本是针对您确实只需要文字的情况。
没有密码的加密PDF
PDF可以用用户密码(打开文件所需)或所有者密码(限制打印或复制等操作)加密。pdf.js需要用户密码才能打开加密文件;没有它,就无法提取。先用PDF解锁工具删除密码(仅在您有权访问的文档上),然后提取。所有者密码有时会阻止在Adobe Reader中复制,但不会在此处阻止提取。
更多问题
什么是PDF文本层?
文本层是PDF中存储字符作为机器可读文本(内容流中的Tj和TJ操作符)而不是像素的部分。由Word、LaTeX或网页转PDF工具创建的数字PDF始终具有文本层。扫描的PDF没有,直到您用OCR添加一个。文本层是允许搜索、复制粘贴、屏幕阅读器和此提取器等工具工作的原因。
为什么我提取的某些文本乱序或顺序不对?
PDF不按阅读顺序存储文本;它们将文本存储为页面上x和y位置的字形操作符。提取器通过从上到下和行内从左到右排序来重建阅读顺序。这适用于单栏流,但可能交错栏目、将页眉与正文混合,或在栏目断点处分割段落。对于复杂版式,尝试逐页复制或使用对版式敏感的Python库,如pdfplumber。
我可以从数百页的PDF中提取文本吗?
可以,但预计需要更长时间并使用更多内存。每页在JavaScript中按顺序解析,这是单线程的,因此500页的书可能需要20到60秒,具体取决于您的机器和页面的复杂性。浏览器的内存上限(桌面Chrome几GB,移动设备较少)比页数更限制总文件大小。如果一个巨大的PDF挂起,请先用PDF分割工具拆分它并分块提取。
什么是PDF/A,为什么它的文本更容易提取?
PDF/A是由ISO 19005定义的PDF的存档子集。它要求嵌入所有字体并带有ToUnicode映射,所有颜色配置文件都是自包含的,并且不引用任何外部资源。ToUnicode要求是使提取可靠的原因:文档中的每个字形都映射回标准Unicode字符。国家档案馆、法院和企业记录系统使用PDF/A正是为了让文本在几十年后仍可提取。
提取相比Adobe Acrobat有多准确?
对于直接的数字PDF,输出逐字符相同。Acrobat有更复杂的启发式算法来处理复杂的多栏版式和表格,因此对于这些特定情况,其输出可能更易读。pdf.js(此工具)自2011年以来一直在积极开发,现在通过了PDF规范大多数合规性测试。对于典型的办公和研究文档,差异可以忽略不计。
该工具支持非拉丁文字(中文、阿拉伯文、西里尔文)吗?
支持,前提是PDF具有这些字符的正确ToUnicode映射(任何现代PDF都有)。提取的文本是UTF-8,并在任何现代编辑器中正确呈现。从右到左的文字(如阿拉伯文和希伯来文)按逻辑顺序而非视觉顺序提取,这是您希望进一步处理的。CJK(中文、日文、韩文)提取完全支持,因为pdf.js处理PDF用于这些文字的CIDFont系统。