定义和导入打印图像(报告)文件和 PDF 文件
打印图像文件(也称为报告文件)是打印报告的电子副本。Adobe PDF 文件是已经保存为标准 PDF 格式的应用程序文件或扫描文件。您定义和导入打印图像文件或 PDF 文件的方式几乎相同。因此,本节的大多数主题都适用于这两种文件类型。
PDF 的定义和导入可能要比打印图像文件更富有挑战性,因为一旦 Analytics 分析了 PDF(这是文件定义进程的一部分),则源 PDF 中看起来对齐的数据列可能会变成未对齐。Analytics 包括两个 PDF 解析器:Xpdf 和 VeryPDF。您可以尝试使用这两个分析器以查看哪个会提供更好的结果。
注意
使用控制汇总可验证从导入的打印图像或 PDF 文件创建的 Analytics 表是否包含源文件中的所有数据。当定义打印图像或 PDF 文件时,有可能无意中排除记录。在开始任何分析之前,您都应该始终确保在 Analytics 中具有完整的数据集。
成功定义打印图像或 PDF 文件的要点
定义打印图像或 PDF 文件可能非常复杂。与其说它是一门科学,倒不如说它是一门艺术。它要求您认真分析源文件中的数据排列,以便计划有效的方法。通常,打印图像或 PDF 文件中的数据排列的标准化程度要比其他文件格式的排列低,涉及复杂的定义过程。需要完成一个迭代的过程才能获得成功。
有一些要点或技术(参见下面的概述)可以帮助您避免遭受挫折。建议您在定义文件之前,或者在定义文件之时,或者在遇到问题时,仔细参阅这些要点。
一般要点
未对齐数据
域和记录
捕捉记录
其他注意事项
一般要点
文件定义过程是迭代性的
成功定义打印图像或 PDF 文件通常是一个迭代的过程,可能需要付出一定数量的试验和错误的代价。您需要执行下列部分或全部单个任务:
- 定义一个或多个域
- 根据一个唯一值定义一个详细记录集
- 定义一个或多个页眉或页脚记录
- 修改或进一步构建准则以优化所捕捉的记录集
- 审核各个域和记录定义的准确性
- 编辑不准确的域或记录定义
- 作为处理未对齐数据的一种方式,多次遍历文件
通过实践,您可以做得越来越好
定义打印图像或 PDF 文件最初可能似乎很困难 – 尤其是定义包含未对齐数据的文件时。通过实践,您可以更好地评估源文件中数据的结构,并且发现适当的方法来定义它。
您可以使用 Analytics 附带的两个样例文件进行实践:
- REPORT3.TXT 更易于定义。Analytics 会自动定义该文件中的详细记录,但是您需要编辑自动定义,因为它包含错误。
- 定义 Inventory.pdf 更富有挑战性,因为它包含未对齐数据(除非您逐页分析文件页面)。Analytics 无法自动定义未对齐文件的任何部分,因此您必须从头创建手动定义。
Analytics 可完美地自动定义另一个样例文件 Report.txt 中的详细域和记录。您可能会发现在数据定义向导中研究 Report.txt 的自动定义很有用。
未对齐数据
针对未对齐数据的解决方法
在数据定义向导中,已分析 PDF 或打印图像文件中的未对齐数据列(参见已分析 PDF 文件中的对齐和未对齐数据)可能使得创建可用的 Analytics 表变得非常困难或费力。如果未对齐数据是一个严重问题,请考虑下列任一方法。
说明
对于您的情况而言,最合适的方法取决于您尝试定义的数据的性质和您在使用 Analytics 方面的经验。Analytics 的新用户应该考虑寻找不同格式的数据。
- 请返回至该文件的源并寻找不同格式的数据。
- 尝试使用转换软件转换该文件,例如,使用将 PDF 文件转换为 Excel 文件或文本文件的软件。导入转换的文件到 Analytics。
- 尝试复制并粘贴 PDF 数据到文本编辑器中。然后,导入该文本文件到 Analytics。
- 使用下列一个或多个技术来定义未对齐域:
- 创建一个域定义,并使其足够长,以捕捉未对齐域中的最左侧和最右侧字符。
- 创建重叠的域定义。
- 创建单个且较长的、包含多个未对齐域的域定义。
有关更多信息,请参阅 在打印图像或 PDF 文件中定义非对齐域。
- 多次导入源文件。在每次导入中,定义一个不同的记录子集。附加生成的 Analytics 表以装配完整的数据集。
有关更多信息,请参阅定义和导入打印图像或 PDF 数据的子集。
已分析 PDF 文件中的对齐和未对齐数据
下面显示的已分析 PDF 文件中的两个最左侧数据列已对齐。数据列的其余部分未对齐。
域和记录
域是蓝色的,记录是灰色的,未定义数据是白色的
当您使用数据定义向导定义打印图像或已分析 PDF 文件中的域和记录时,三种颜色指示数据的状态:
- 水蓝色突出显示指示该数据是已定义域的一部分。所有已定义域还是已定义记录的一部分。
- 灰色突出显示指示该数据是已定义记录的一部分,但不是已定义域的一部分。
- 白色背景指示该数据完全未定义。
说明
只有水蓝色突出显示域成为生成的 Analytics 表的一部分。
已定义记录中的灰色突出显示数据被忽略,除非它也被定义为域。记录的已定义域之间的灰色部分在生成的 Analytics 表中被省略。
完全未定义的数据被忽略。如果您想要在生成的 Analytics 表中包括此数据的任何部分,则必须定义附加的域和记录。
已定义域、已定义记录和未定义数据
您可以定义三种数据:详细、页眉和页脚
在数据定义向导中,您可以定义打印图像或 PDF 文件中的三种数据。
| 数据的种类 | 描述 | 示例 |
中的位置 |
|---|---|---|---|
| 详细数据 |
文件的基本内容,以记录形式排列。 定义详细数据是强制性的。您不能定义打印图像或 PDF 文件而不定义详细数据。 |
|
#2,带有蓝色轮廓 |
| 头数据 |
出现在详细记录块或子集上方的标识信息。 定义头数据的操作是可选的。如果您不需要头信息,则不需要定义它。 |
|
#1,带红色轮廓 |
| 尾数据 |
出现在详细记录块或子集下方的信息。 定义尾数据的操作是可选的。如果您不需要尾信息,则不需要定义它。 |
|
#3,带水蓝色轮廓 |
其他指南
- 您可以按照任何顺序定义详细、页眉或页脚数据。系统未对顺序进行强制。
- 您还可以指定域名称(在 PDF 文件中的不同种类的数据中以绿色显示)。指定域名称的方法不同与定义详细、页眉或页脚数据的过程。
说明
请勿使用页眉数据来尝试定义可能出现在打印图像或 PDF 文件中的域名称。
PDF 文件中的不同种类的数据
下面的示例突出显示了一个库存估价报告的 PDF 中的不同种类的数据。
已分析 PDF 文件中的详细数据和页眉数据
下面的示例显示了上述库存估价报告在数据定义向导中得到分析后的样子。一个包含五个域的详细记录和一个包含两个域的页眉记录已经被定义。
如何处理头数据和尾数据
尽管数据定义向导将页眉或页脚数据视为包含域的记录,但只有详细数据在生成的 Analytics 表中成为实际的记录集。您定义的任何页眉或页脚数据都成为被添加到详细记录的一个或多个域。
对于单个记录块或记录子集中的每个记录,所添加的头域和尾域都重复相同的值。例如,对于一个记录块为 “Store 3”,对于下一个记录块为 “Store 4”,依此类推。
请勿选择源文件中的域名称。
请勿试图通过在打印图像或 PDF 文件中选择它们来定义域名称。尽管您可能感到违反直觉,但请使源文件中的所有域名称保持未选定状态。请通过在域定义对话框中键入其名称来创建域名称。如果您选择源文件中的域名称,则 Analytics 会将这些域名称视为包含在域中的数据。
指定一个唯一值来捕捉记录集
准确捕捉记录集的关键是选择或指定对该记录集而言唯一的值。换句话说,就是出现在该记录集的所有记录中的特定字节位置(字符位置),而不出现在源文件中其他任何地方的该位置的值。该唯一值可以是一个字符或多个字符。
例如,在选择对记录集而言唯一的值中,“Unit Cost”域中的小数点被选定为唯一值。在该域的每个金额中,它都出现在同一个位置,而且它未出现在该域上方或下方的该位置。
您可以在以下两个位置之一来选择或指定唯一值:
- 在您选择以开始定义初始数据域的初始数据值中
- 在与初始数据值相同的排中
选择对记录集而言唯一的值
在下面的示例中,唯一值位于与初始数据值相同的排中。初始数据值(在选定后带有边框)是“Product No”域中的第一个产品编号。
有关选择唯一值的提示
要选择唯一值,请寻找满足以下条件的记录数据:与该记录集上方或下方的数据相比,该记录中的一个或多个被一致定位的字符是唯一的或者具有唯一的定位。
下列任一可能值都可能是唯一值的良好候选,因为它们通常出现在每个记录中的同一个位置,而一般不会出现在该记录集外部的该位置:
- 数字中的小数点
- 日期中的单反斜杠或双反斜杠
- ID 号中的一个或多个连字符
- 一个构成标准前缀的字符串
- 在页眉或页脚数据中,具有一致形式的标签,如“Customer ID:”或“Subtotal:”
在最初选择唯一值可在记录定义对话框中创建精确匹配准则。在下面的示例中,该准则指定小数点必须出现在字节位置 74 中,以便将任何记录包括在记录集中。
如果需要,您可以将精确匹配更改为通用匹配,如数值或非空白,它们可以在指定唯一值时提供更高的灵活性。有关更多信息,请参阅处理记录定义。
精确地捕捉记录集
精确地捕捉记录集可能富有挑战性。您可能选择您认为对您想要捕捉的记录集唯一的值,却发现所需的某些记录未被捕捉,或者捕捉了额外的非记录数据。
要更好地理解这一情况,将打印图像或 PDF 文件想象成由列和排构成的网格可能会有所帮助。假设每个列恰好为一个字符或一个空格宽,并且从文件的最顶部一直延伸到文件的最底部。
当您在特定位置选择或指定一个值以捕捉一个记录集时,Analytics 会考虑从文件顶部到底部位于该位置的任何字符,以搜索该值。即使字符位于您视为记录数据的那些排的外部,这些字符也会被加以考虑。如果您指定的值不足够精确,则会有额外的非记录数据被捕捉和包括在该记录集中。
非精确定义数据域
在上述示例中,如果您将“Product No”域的第一个位置的一个通用数值指定为用于捕捉记录集的唯一值,则除了产品编号的实际首位数字以外,该文件中任何地方位于该位置的任何数字都会被捕捉。请参见下面的示例。
精确定义数据域
但是,如果您指定的通用数值包括了该域的全部九个数字,则您所创建的准则将足够精确以仅捕捉预期的记录集。
使用多个准则捕捉记录集
您可能发现单个准则(如日期域中的反斜杠)不足以精确地捕捉记录集。原因可能是缺少某些日期值。或者,反斜杠会偶然出现在页眉或页脚信息中的相同位置,但却处于您想要捕捉的记录集的外部。在此情况下,您可以添加附加的准则以优化所捕捉的记录集。
说明
您可以使用该准则来包括或者排除源文件中的排。
多个准则的一些示例:
- 包括在日期域中包含第一个反斜杠“并且”在该日期域中包含第二个反斜杠的排
- 包括在数值域中包含小数点的排“并且”排除包含单词“Subtotal”的排
- 包括在指定的第一个字节位置集中包含字母字符的排“或者”包括在指定的第二个字节位置集中包含字母字符的排
有关更多信息,请参阅处理记录定义。
检查整个文件中的记录定义和域定义
当您定义记录和域时,请确保浏览文件以检查定义的准确性。空白值、意外字符和未对齐数据可能导致下列任一问题:
- 文件中的某些记录被排除
- 非记录数据被错误地捕捉为记录
- 域数据被不完全地包含在域定义中(域定义截断了值)
- 来自两个不同域的数据出现在单个域定义中
如果记录定义不正确,您需要修改或进一步构建用于捕捉记录集的准则。有关更多信息,请参阅处理记录定义。
如果域定义是不正确,您需要编辑定义。有关更多信息,请参阅处理域定义。
您可以定义多行记录和域
您可以定义记录或域数据以使其超出源文件中的一行。例如,可以将各个记录中的地址数据排列在多个行上。有关更多信息,请参阅处理多行记录和域。
只定义和导入您需要的数据
不要定义您的分析不需要的数据域,以至于浪费时间或者使定义和导入过程复杂化。仅当页眉或页脚记录添加有价值信息时才定义它们。您所包括在内的每个附加数据元素都可能增加复杂性并使定义过程变得更加困难。
控制结果 Analytics 表中的域的顺序
您定义详细记录中的域的顺序就是其在生成的 Analytics 表中显示的顺序。如果您在定义过程中删除了一个详细域,然后重新添加了它,则它会失去其原始位置,并且被放置在所有详细域的末尾。无论进行了什么样的内部重排,详细域都会保持在一起。
提示
如果您使用初始详细域来捕捉详细记录,但是您不希望该域首先出现在生成的 Analytics 表中,则可以使用该域来捕捉记录,然后删除它并重新添加它。
页眉和页脚域在生成的 Analytics 表中出现的顺序就是您定义它们的顺序。如果您尚未定义初始详细域,则它们出现在详细域之前;如果您已经定义初始详细域,则它们出现详细域之后。
在您已经完成导入打印图像或 PDF 文件到 Analytics 中的工作之后,您还可以选择重新排列域。您可以在视图中拖动列以重新排列它们。如果您想要创建一个新的表,其中,表布局中的域被重新进行物理排序,则您还可以通过视图进行提取。有关更多信息,请参阅 提取数据。您可能发现在 Analytics 中重新排列域要比尝试在数据定义向导中维护精确的域顺序更容易。
Analytics 可能自动定义文件
如果 Analytics 可以识别数据中的重复模式,则它可能自动定义打印图像或 PDF 文件。如果数据定义向导中源文件的初始外观包括水蓝色域定义和灰色记录定义,则表明 Analytics 已部分或完全自动定义了该文件。
如果您检查整个文件中的域和记录定义,并且断定该自动定义是完整和准确的,则定义文件的工作已完成大半了。您可以前进至数据定义向导的下一个页面。
通常,Analytics 的自动定义不完全准确,您需要决定下列哪种做法更容易:编辑自动定义,或者删除整个自动定义并开始从头手动定义。您可以在任一时刻删除并重新开始,因此您可能希望在最初尝试进行一些编辑工作,然后如果很显然自动定义远远不能满足需要,就在该时刻删除它。
说明
只有详细信息记录被自动定义。页眉或页脚数据(如果您需要它)必须被手动定义。
使用控制汇总可验证生成的 Analytics 表
在开始任何数据分析之前,请确保使用控制汇总来验证从打印图像或 PDF 文件创建的 Analytics 表包含源文件中的所有数据。不完整的 Analytics 表会使您进行的任何分析变得无效。
使用控制汇总验证 Analytics 表:
-
执行以下操作之一:
-
输出结果至屏幕或新的 Analytics 表,并且将 Analytics 中的小计或汇总值与源文件中的数字进行比较。
如果所有数字都相同,则表明您具有完整的数据集。
如果一个或多个数字不相同,则表明 Analytics 表中的数据不同于源文件中的数据。如果您导入了数据子集,并且在 Analytics 中重新装配了完整的数据集,则一种可能性是 Analytics 表中存在重复记录。有关删除重复记录的信息,请参阅删除重复项。
如果重复记录不是问题所在,则您可能必须重做源文件的定义和导入。如果您重做定义,请确保认真检查域和记录定义,以确保准确地捕捉数据。