当前位置: 首页 > 知识库问答 >
问题:

AWS CloudSearch上传的PDF内容未索引

王高超
2023-03-14

我正试图通过控制台将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,并且

然后,我手工制作了自己的批处理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命令行界面通过将PDF转换为原始文本来生成批处理。不确定为什么AWS云搜索控制台不做同样的事情。

C:\Downloads>cs-import-documents --source .\Sample.pdf --output .\1.json

生产:

[ {
  "type" : "add",
  "id" : "xmlC:_Downloads_Sample.pdf",
  "fields" : {
    "content_type" : "applicathtml" target="_blank">ion/pdf",
    "created" : "Fri Jun 17 11:14:45 EDT 2016",
    "resourcename" : "Sample.pdf",
    "content" : "6/17/2016 [... remaining text omitted for brevity ...]
  }
} ]

AWS文件包括:

Amazon CloudSearch控制台提供了一种从几种常见文件类型自动生成格式正确的JSON或XML的方法:PDF、Microsoft Excel、Microsoft PowerPoint、Microsoft Word、CSV、文本和超文本标记语言。

截至2016年6月24日,这似乎是不正确的(或者我在使用控制台时错过了一些东西)。

这给我留下了另一个问题:什么是一种合理有效的方法,可以每天将S3存储桶中的数百个新PDF放入CloudSearch?明确地:

  • CloudSearch API是否提供“pdf到文本”作为其API的一部分

如果CLI是推荐的方式,那似乎效率低下,因为(我假设)CLI必须从S3中提取PDF,转换为文本,然后将生成的SDF推送到CloudSearch。似乎。。。奇怪的是,AWS不会提供一个针对CS的API调用,而这正是为我所做的。也许他们真的提供了,而我却错过了?

共有2个答案

阎德宇
2023-03-14

终于,我能让它工作了!对我来说,它的工作方式是使用cs导入文档AWS Cloudsearch命令。cs导入文档——源“c:\test.pdf”——输出“c:\test.sdf”

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

祝你好运拉杰

胡嘉歆
2023-03-14

这里也有同样的问题。我正在从事文档管理项目(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格式的文本。

 类似资料:
  • 我创建了一个索引映射,就像这样,现在我将使用filebeat向Elasticsearch发送一个json文件,如何确保配置我的filebeat。yml将信息发送到我刚刚创建的新索引映射? 索引映射: 我的音乐节拍。yml: #设置日志级别。默认的日志级别是info.#可用的日志级别包括:错误、警告、信息、调试#日志。级别:调试 我想确保我将用filebeat上传的内容,会正确提交到我之前设置的El

  • 问题内容: 如何在目录/子目录中搜索PDF文件的内容?我正在寻找一些命令行工具。似乎无法搜索PDF文件。 问题答案: 您的发行版应提供一个名为的实用程序: 要使pdftotext输出到stdout,而不是文件,必须使用“-”。在和选项将在grep的输出把文件名。可选标志不错,它告诉grep使用终端上的颜色进行输出。 (在Ubuntu中,由或提供。) 这种方法,使用和,拥有一个优势,如果你想使用GN

  • 我有一个需要缩小的pdf。pdf是A4竖屏的,我需要的是将pdf的内容缩小到5%,并将其放入一个新的A4和竖屏大小的PDF中。将pdf转换为图像、缩放并放回pdf不是一个选项。我正在寻找一种在java中解决这个问题的方法。有没有办法用pdfbox或itext解决这个问题?

  • 问题内容: 如何在iText中完成此操作?我有一个带有客户签名的PDF。我需要向未签名的属性添加ocsp响应。 我知道如何使用 但我不知道如何使用替换PDF 。如果我使用此代码: 包含签名的字典在哪里,则签名(在Adobe Reader中打开文档时)被破坏。 问题答案: 当iText 在正常模式下操作文档时,它可以(并且经常)重新排列现有的PDF对象。显然,这破坏了任何现有集成签名的哈希值。此外,

  • 我想在中显示pdf文件的内容。 问题:当我启动时,一个新的对话框正在打开,不管我是想在浏览器中还是在pdf查看器中加载pdf。但我想直接在中加载内容。我还尝试了一个前缀url来嵌入内容,但结果显示:没有预览可用。 我的代码: 我现在用android-pdfView库用下面的代码尝试了一下: 但随后会在以下地址出现一个:。adress直接引用了我onedrive帐户中的pdf文件。所以当我在浏览器中