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

时间:2013-03-26 13:58:32

标签: apache apache-tika

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文件,则每个中文字符将被提取为“?”。

非常感谢!

2 个答案:

答案 0 :(得分:1)

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

Tika还包括一些针对此的单元测试,以验证其是否有效。一个这样的测试使用this sample chinese email。如果使用命令行Tika app,并抓住前几行,我们看到它正常工作:

$ 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

或使用此Japanese document

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

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

答案 1 :(得分: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

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

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