【发布时间】:2018-05-29 00:16:20
【问题描述】:
我正在尝试通过控制台将 PDF 上传到 CloudSearch。添加文档时,无法有效搜索内容。控制台生成 SDF 格式的 JSON,如下所示:
[ {
"type" : "add",
"id" : "Sample.pdf",
"fields" : {
"content_type" : "text/plain",
"content_encoding" : "windows-1252",
"resourcename" : "Sample.pdf",
"content" : "%PDF-1.6\r\nCatalogx^½]ÛrÜ6�}Ÿ¯˜ÊÃ{...}\r\n%%EOF"
}
} ]
当我尝试搜索文档内容时,会出现上面可读的文本(“PDF”、“目录”),但不会出现文档的任何“有用”内容。
我很惊讶地看到:
-
content/type是text/plain而不是appliation/pdf,并且 - 内容未编码为 base64 之类的内容
然后我手工制作了自己的批处理 XML 文件来尝试相同的操作:
<batch>
<add id="pdftest1">
<field name="content_type">application/pdf</field>
<field name="resourcename">Sample1.pdf</field>
<field name="content">{copied from aws console output}</field>
</add>
</batch>
和
<batch>
<add id="pdftest2">
<field name="content_type">application/pdf</field>
<field name="resourcename">Sample2.pdf</field>
<field name="content">{base64 encoded pdf contents}</field>
</add>
</batch>
是否可以让 CloudSearch 搜索 PDF 的“有用”内容而无需先将 PDF 转换为文本文件?
如果是这样,我做错了什么?
2016 年 6 月 27 日编辑
CloudSearch command line interface 通过将 PDF 转换为原始文本生成批处理。不知道为什么 AWS CloudSearch 控制台不这样做。
C:\Downloads>cs-import-documents --source .\Sample.pdf --output .\1.json
制作:
[ {
"type" : "add",
"id" : "xmlC:_Downloads_Sample.pdf",
"fields" : {
"content_type" : "application/pdf",
"created" : "Fri Jun 17 11:14:45 EDT 2016",
"resourcename" : "Sample.pdf",
"content" : "6/17/2016 [... remaining text omitted for brevity ...]
}
} ]
Amazon CloudSearch 控制台提供了一种自动生成的方法 来自几种常见文件类型的正确格式的 JSON 或 XML:PDF、 Microsoft Excel、Microsoft PowerPoint、Microsoft Word、CSV、文本和 HTML。
截至 2016 年 6 月 24 日,这似乎是不正确的(或者我在使用控制台时遗漏了一些东西)。
这给我留下了另一个问题:每天将位于 S3 存储桶中的数百个新 PDF 导入 CloudSearch 的合理有效方法是什么?具体来说:
- CloudSearch API 是否提供“pdf-to-text”作为其 API 的一部分?
- 我必须使用 CS CLI 来执行转换吗?
如果 CLI 是推荐的方式,那似乎效率低下(我假设)CLI 必须从 S3 中提取 PDF,转换为文本,然后将生成的 SDF 推送到 CloudSearch。看起来……奇怪的是,AWS 不会提供针对 CS 的 API 调用,而这正是为我做的。也许他们确实提供了它,而我却错过了它?
【问题讨论】:
标签: amazon-web-services pdf amazon-cloudsearch