在日常工作中,我们经常需要从PDF文件中提取文本,但准确地提取PDF文本的却非常困难,提取后可能会出现文字间距混乱、字符乱码、无法复制、格式完全扭曲等问题。
下面,我们将探索 PDF 文本提取的难点,并找到 ComPDF 的解决方案。您还可以体验ComPDFKit Conversion SDK 的PDF 文本提取技术的性能。
1. PDF文本提取原理
PDF 中的字体非常复杂。要理解 PDF 解析为何如此困难,让我们先看看 PDF 文件如何存储文本数据。
PDF 中的文本使用文本运算符(如 TJ、Tj、Tf、Tm 和 Td)存储在内容流中。要正确提取文本,您需要解析 PDF 内容流、识别字体编码并将字形映射回 unicode。
-
解析 PDF 内容流:内容流是一系列绘制指令,定义如何在页面上呈现文本和图形。我们应该解析 PDF 以从页面对象获取内容流,识别文本运算符并读取操作数值。您将了解使用的文本字体、文本位置以及正在绘制的文本等。
-
识别字体编码:PDF 中的文本不以纯 Unicode 字符的形式存储。相反,它使用标准编码、自定义编码和 ToUnicode CMap 进行编码。字体编码决定字节(字符代码)如何映射到实际文本。在内容流中获取使用的字体名称后,您需要检查 PDF 中的字体字典,并确定是否存在 ToUnicode 映射。
-
将字形映射回 Unicode:字形是字符的实际形状或表示。在 PDF 中,文本通常存储为字形 ID,而不是 Unicode 字符。您需要使用标准编码、自定义编码和 ToUnicode CMap 将字形映射回 Unicode:
○使用 ToUnicode CMap(最佳情况):如果存在 ToUnicode CMap,我们可以直接将编码字形映射到 Unicode 字符。
○使用标准编码表:如果不存在 ToUnicode 映射,我们必须使用标准编码表:
- WinAnsiEncoding →用于西方文本。
- MacRomanEncoding →在 MacOS 上使用。
- PDFDocEncoding →用于内部 PDF 字符串。
○自定义启发式和 OCR:如果没有可用的编码信息,我们可能需要:
- 根据字体类型和字节模式进行猜测。
- 如果文本存储为图像,请使用OCR(光学字符识别) 。
2. PDF 文本提取困难的原因
原因 1:PDF 文本复杂、多样、相似
由于文本书写复杂,书写系统多样,字符符号相似,导致出现以下PDF文本提取问题。
-
文本间距问题:文本间距有多种定义方式,例如字符间距、单词间距、行距和文本矩阵。编码错误或解析不当可能会导致文本重叠、间距异常或字符错位。
-
乱码/奇怪的字符:如果 PDF 文本提取工具无法访问完整字体或无法正确解析字体子集,则文本可能会显示为空白或乱码。
-
带连字符的单词问题:带连字符的单词通常被视为单独的文本对象。连字符逻辑由布局规则而不是文本内容控制,这可能会导致连字符被删除、插入多余的空格或连字符放置不正确。
-
相似字符区分不正确:PDF 中的字形 ID 以视觉方式存储字符,这可能导致提取过程中的误解。
原因 2:PDF 中的文本字体发生变化
字体识别是提取 PDF 文本如此困难的另一个主要原因。由于字体种类繁多,并且单个 PDF 中可能共存数十种字体,字体处理对许多科技公司来说都是一个令人头疼的问题。如果您遇到以下问题,则可能是由于字体识别和恢复问题造成的:
-
转换时错误显示 Arial 字体
-
乱码或空白文本
-
缺失或替换特殊字符
原因 3:缺少 PDF 文本属性的元数据
为什么 PDF 解析如此困难?PDF 文件是页面描述格式,主要存储文本的视觉布局,而不是结构信息。因此,PDF 通常缺少表示文本属性(例如页眉、页脚、粗体、大小和颜色)的数据。这会导致在将 PDF 文本转换为其他格式时出现粗体、下划线和斜体等错误。
原因 4:文本布局重叠导致文本位置错误
PDF 中的文本通常以绘图命令的形式存储,而不是按阅读顺序存储。以下情况会导致错误地识别文本位置:
-
多列等复杂布局:重叠的文本层使得识别文本位置变得困难。
-
不连续的文本块:独立的文本块可能无法被识别为连贯的内容,从而导致错误的换行。
-
文本与图像重叠:图像和文本混合的内容可能会导致文本模糊或错位。
-
页面坐标系:缩放或旋转页面可能会导致位置信息错误。
-
不同的 PDF 生成器:不同的 PDF 生成器可能使用不同的参考点或坐标系。
原因 5:PDF 文本不可见
从 PDF 中提取文本时,以下文本会降低提取质量:
-
隐藏文本:PDF 中的某些文本可能非常小或被隐藏。
-
页外字符:PDF 包含的文本数据通常比页面上可见的内容多。
原因 6:图像或扫描 PDF 中的文本
既然提取 PDF 文本如此困难,那么提取图像文本肯定是个大问题。OCR(光学字符识别)可以帮助识别和提取扫描 PDF 和图像中的文本。该过程通常涉及以下步骤和挑战:
识别步骤:
-
图像预处理
-
字符分割
-
特征提取和模式匹配
-
语言模型与上下文校正
挑战:
-
复杂的页面布局
-
手写文字和不常见的字体
-
低质量图像
-
字符合并或损坏
-
多语言和混合文本
-
扫描件出现倾斜、弯曲或扭曲
原因7:PDF表格文字与单元格的对应关系
从 PDF 中提取文本和表格通常很简单,但难点在于恢复文本和表格单元格之间的关系。合并单元格、缺少边框以及单元格内的文本位置等问题使表格识别变得复杂。
原因 8:保护 PDF 不被复制
某些 PDF 会限制复制文本。嵌入或加密的内容可能需要额外的步骤才能访问和解码,然后才能提取。安全设置可以阻止工具访问内容,除非提供或绕过适当的权限。
3. 如何轻松正确地从 PDF 中提取文本 -ComPDF 解决方案
ComPDFKit Conversion SDK 的最新版本解决了上述挑战,显著改善了 PDF 文本提取功能,可无缝将 PDF 转换为 XLSX、TXT、Excel 和 PPT。它使用 AI 模型准确解析和提取文本属性(粗体、斜体、大小)、空格、位置、布局,如下图所示。
使用ComPDF的在线PDF 文本识别或联系他们来测试最新的 PDF 文本提取功能。