5

Apache Tika 能提取中文、日文等外语吗?

我有以下代码:

    Detector detector = new DefaultDetector();
    Parser parser = new AutoDetectParser(detector);
    InputStream stream = new ByteArrayInputStream(bytes);
    OutputStream outputstream = new ByteArrayOutputStream();
    ContentHandler textHandler = new BodyContentHandler(outputstream);
    Metadata metadata = new Metadata();
    // Set<String> langs = LanguageIdentifier.getSupportedLanguages();
    // metadata.set(Metadata.CONTENT_LANGUAGE, lang);
    // metadata.set(Metadata.FORMAT, hint);
    ParseContext context = new ParseContext();
    try {
        parser.parse(stream, textHandler, metadata, context);
        String extractedText = outputstream.toString();
        return extractedText;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    } catch (TikaException e) {
        e.printStackTrace();
    }

如果输入的是包含中文字符的doc文件,每个中文字符将被提取为“?”。

非常感谢!

4

2 回答 2

2

Apache Tika 能够从其支持的文件格式中提取 unicode 文本。只要文件格式可以存储 unicode 文本(例如中文或日文字符),Apache Tika 就可以提取

Tika 还为此包含了许多单元测试,以验证它是否有效。一个这样的测试使用这个示例中文电子邮件。如果使用命令行 Tika 应用程序,并抓住前几行,我们会看到它工作:

$ java -jar tika-app-1.4.jar --text testMSG_chinese.msg | head
Alfresco MSG format testing ( MSG 格式測試 )
    From
    Tests Chang@FT (張毓倫)
    To
    Tests Chang@FT (張毓倫)
    Recipients
    tests.chang@fengttt.com

或者用这个日本文件

$ java -jar tika-app-1.4.jar --text testRTFJapanese.rtf | head -2
ゾルゲの処刑記録、
ゾルゲと尾崎、淡々と最期 

您只需要确保您生成的任何文本输出都以合适的编码(例如 utf8)存储,并且您用来显示它的字体支持这些字形!

于 2013-09-18T09:54:22.813 回答
0

没有看到任何地方写过 Apache Tika不支持中文和日文等外语。但是在查看以下Apache Tika 源文件时,我找不到这两种语言。

http://svn.apache.org/repos/asf/tika/branches/1.4/tika-core/src/main/resources/org/apache/tika/language/tika.language.properties

但是,您仍然可以按照五分钟用户指南中讨论的相同方式尝试实施,以使用您的中文文档文件进行测试

https://tika.apache.org/1.4/parser_guide.html

于 2013-09-18T06:37:55.897 回答