【问题标题】:Can I use Tika for content extraction on Google App Engine?我可以在 Google App Engine 上使用 Tika 进行内容提取吗?
【发布时间】:2013-12-05 07:29:06
【问题描述】:

我正在开发一项网络服务,该服务需要从上传的文档(PDF、PowerPoint、Word 等)中提取内容,并且我想将其托管在 Google App Engine 上以降低成本。如果没有运行 Google Compute VM 来运行 Solr/Tika 作为服务器,我有哪些选择?我可以使用 App Engine 的 Java 托管来包装 Tika 并返回内容吗?

应用流程如下所示:

  1. 用户上传文档。 Worker 任务被放入队列中。
  2. Worker 任务被消耗,触发将文件名发送到 Solr 以进行 Tika 提取。这个过程可以假设是一个 Java 应用程序读取文件的内容并将它们发送到 Tika。
  3. 内容存储在全文搜索引擎和数据库中。

使用任务队列执行 Tika 命令行应用似乎是不可能的。

【问题讨论】:

    标签: java google-app-engine solr apache-tika


    【解决方案1】:

    简答:

    它的大部分功能都不是开箱即用的。

    太多的代码依赖于File 对象,并创建了 GAE 中不存在的临时File 对象。

    长答案:

    它是开源的,您可以修改代码并将调用采用 File 对象的方法的内容更改为采用 InputStream 对象,然后您可以处理存在于 Blobstore 或 @987654326 中的内容@。

    这是我现在正在破解的一个示例:

    @NotNull
    public static Metadata readMetadata(@NotNull File file) throws JpegProcessingException, IOException
    {
        JpegSegmentReader segmentReader = new JpegSegmentReader(file);
        return extractMetadataFromJpegSegmentReader(segmentReader.getSegmentData());
    }
    

    哪里有这个与File 对象无关的完美调用:

    @NotNull
    public static Metadata readMetadata(@NotNull InputStream inputStream, final boolean waitForBytes) throws JpegProcessingException
    {
        JpegSegmentReader segmentReader = new JpegSegmentReader(inputStream, waitForBytes);
        return extractMetadataFromJpegSegmentReader(segmentReader.getSegmentData());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2012-10-25
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      相关资源
      最近更新 更多