Elasticsearch - 使用base64提取PDF内容和编码

时间:2015-06-24 14:41:03

标签: pdf python-3.x encoding elasticsearch elasticsearch-plugin

我希望能够从PDF文件中提取内容,并能够使用ElasticSearch在该内容中进行搜索。

我安装了{"title": "file.pdf", "file": "IkdvZCBTYXZlIHRoZSBRdWVlbiIgKGFsdGVybmF0aXZlbHkgIkdvZCBTYXZlIHRoZSBLaW5nIg=="}

我创建了一个名为" docs"。

的新索引

我确实创建了一个名为" tmp.json"的文件。有这个内容:

curl -X PUT "http://localhost:9200/docs/attachment/_mapping" -d '{
                      "attachment": {
                         "properties" : {
                         'file" : {
                               "type" : "attachment",
                               "fields" : {
                                   "title" : {"store":"yes"},
                                   "file":{
                                       "type":"string",
                                       "term_vector":"with_positions_offsets", 
                                       "store":"yes"}
                                   }
                                }
                            }
                        }
                    }'

我确实执行了以下操作:

curl -X POST "http://localhost:9200/docs/attachment" -d @tmp.json

以及以下内容:

base64.b64decode("IkdvZCBTYXZlIHRoZSBRdWVlbiIgKGFsdGVybmF0aXZlbHkgIkdvZCBTYXZlIHRoZSBLaW5nIg==")

问题是内容存储在文件中。

我期待内容被解码,如下:

b'"God Save the Queen" (alternatively "God Save the King"'

这给出了:

import json, base64
file64 = base64.b64encode(open('file.pdf', "rb").read()).decode('ascii')
f = open('tmp.json', 'w')
data = {"file":file64, "title":fname}
json.dump(data,f)
f.close()

要在base64中编码,我在这里做:

googleApiClient.connect()

我希望能够使用kibana查看内容(但现在我只看到base64数据...)

1 个答案:

答案 0 :(得分:1)

这没有用:

curl -X PUT "http://localhost:9200/docs/attachment/_mapping" -d '{
                  "attachment": {
                     "properties" : {
                     "content" : {
                           "type" : "attachment",
                           "fields" : {
                               "title" : {"store":"yes"},
                               "content":{
                                   "type":"string",
                                   "term_vector":"with_positions_offsets", 
                                   "store":"yes"}
                               }
                            }
                        }
                    }
                }'

这很有效,我可以通过Kibana看到PDF的内容:

curl -X PUT "http://localhost:9200/docs" -d '{
                              "mappings" : {
                                "attachment" : {
                                  "properties" : {
                                    "content" : {
                                      "type" : "attachment",
                                      "fields" : {
                                        "content"  : { "store" : "yes" },
                                        "author"   : { "store" : "yes" },
                                        "title"    : { "store" : "yes"},
                                        "date"     : { "store" : "yes" },
                                        "keywords" : { "store" : "yes", "analyzer" : "keyword" },
                                        "name"    : { "store" : "yes" },
                                        "content_length" : { "store" : "yes" },
                                        "content_type" : { "store" : "yes" }
                                      }
                                    }
                                  }
                                }
                              }
                            }'