【问题标题】:AWS CloudSearch uploaded PDFs content not indexedAWS CloudSearch 上传的 PDF 内容未编入索引
【发布时间】: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/typetext/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 ...]
  }
} ]

AWS documentation 包括:

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


    【解决方案1】:

    同样的问题。 我正在从事文档管理项目(C#、WPF) 并希望从 S3 为 CloudSearch 上的大量 PDF 编制索引。

    按照我的要求,以下流程对我有用。我找不到任何其他解决方案。

    • 手动配置索引
      • 示例字段:“文件名”、“文本”、“路径”、“修改日期”
    • 将文档添加到 CloudSearch 的代码

      // Find all files in root folder create index on them
              List<string> lstFiles = listAllFilesOnCloud("[BucketName]");
      
              foreach (string strFile in lstFiles)
              {
                  string FileName = System.IO.Path.GetFileNameWithoutExtension(strFile);
                  string Text = ExtractTextFromPdf("https://s3.amazonaws.com/" + strFile);
                  string Path = strFile;
                  DateTime ModifiedDate = DateTime.Now;
      
      
                  string headerText = Text.Substring(0, Text.Length < 150 ? Text.Length : 150);
                  foreach (var docs in ltDocumentTypes)
                  {
                      if (headerText.ToUpper().Contains(docs.searchText.ToUpper()))
                      {
                          DocumentType = docs.DocumentType;
                          Vault = docs.VaultName; ;
                      }
                  }
      
                  if (string.IsNullOrEmpty(DocumentType))
                  {
                      DocumentType = "Default";
                      Vault = "Default";
                  }
      
                  IndexDocument docDetail = new IndexDocument();
                  docDetail.filename = FileName;
                  docDetail.text = Text;
                  docDetail.path = Path;
                  docDetail.modifieddate = ModifiedDate;
      
                  UploadDcoumentOnCloudSearch(docDetail);
              }
      

    使用 ITexSharp 提取文本格式 pdf。

    【讨论】:

      【解决方案2】:

      终于,我能够让它工作了!它对我有用的方式是对我们使用 cs-import-documents AWS Cloudsearch 命令。 cs-import-documents --source "c:\test.pdf" --output "C:\test.sdf"

      它生成了一个 .json 文件。我通过控制台将它上传到 Cloudsearch,搜索提供了结果。

      祝你好运, 拉杰

      【讨论】:

      • 我知道这是旧的,但希望你能帮助我。命令cs-import-documents 不可用。
      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2017-10-30
      相关资源
      最近更新 更多