About

ドキュメント

各種設定

Built by Maven

ファイルからの文字列・メタ情報の抽出方法

S2Robot では、ファイルから文字列とメタ情報を抽出する方法として、Extractor を提供しています。 Extractor は ExtractorFactory から MIME タイプをキーとして取得することができます。 また、dicon ファイルの設定により自由に Extractor を追加、削除することが可能です。

本機能は、S2Robot のクローリング機能とは独立しているので、ファイルからの文字列抽出をしたい場合に利用可能です。 Extractor だけ利用したい場合は、s2robot_extractor.dicon を include してください。

設定方法

Extractor をカスタマイズする場合は、s2robot_extractor.dicon を作成してその中で定義します。 標準の s2robot_extractor.dicon は以下になります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
        "http://www.seasar.org/dtd/components24.dtd">
<components>
    <component name="tikaExtractor" class="org.seasar.robot.extractor.impl.TikaExtractor"/>

    <component name="extractorFactory" class="org.seasar.robot.extractor.ExtractorFactory">
        <initMethod name="addExtractor">
            <arg>{
"application/xml",
"image/svg+xml",
"application/x-tika-msoffice",
"application/vnd.visio",
"application/vnd.ms-powerpoint",
"application/vnd.ms-excel",
"application/vnd.ms-excel.sheet.binary.macroenabled.12",
"application/msword",
"application/vnd.ms-outlook",
"application/x-tika-ooxml",
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
"application/vnd.ms-powerpoint.presentation.macroenabled.12",
"application/vnd.openxmlformats-officedocument.presentationml.template",
"application/vnd.openxmlformats-officedocument.presentationml.slideshow",
"application/vnd.ms-powerpoint.slideshow.macroenabled.12",
"application/vnd.ms-powerpoint.addin.macroenabled.12",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.ms-excel.sheet.macroenabled.12",
"application/vnd.openxmlformats-officedocument.spreadsheetml.template",
"application/vnd.ms-excel.template.macroenabled.12",
"application/vnd.ms-excel.addin.macroenabled.12",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.ms-word.document.macroenabled.12",
"application/vnd.openxmlformats-officedocument.wordprocessingml.template",
"application/vnd.ms-word.template.macroenabled.12",
"text/html",
"application/xhtml+xml",
"application/x-asp",
"application/rtf",
"application/pdf",
"text/plain",
"application/vnd.sun.xml.writer",
"application/vnd.oasis.opendocument.text",
"application/vnd.oasis.opendocument.graphics",
"application/vnd.oasis.opendocument.presentation",
"application/vnd.oasis.opendocument.spreadsheet",
"application/vnd.oasis.opendocument.chart",
"application/vnd.oasis.opendocument.image",
"application/vnd.oasis.opendocument.formula",
"application/vnd.oasis.opendocument.text-master",
"application/vnd.oasis.opendocument.text-web",
"application/vnd.oasis.opendocument.text-template",
"application/vnd.oasis.opendocument.graphics-template",
"application/vnd.oasis.opendocument.presentation-template",
"application/vnd.oasis.opendocument.spreadsheet-template",
"application/vnd.oasis.opendocument.chart-template",
"application/vnd.oasis.opendocument.image-template",
"application/vnd.oasis.opendocument.formula-template",
"application/x-vnd.oasis.opendocument.text",
"application/x-vnd.oasis.opendocument.graphics",
"application/x-vnd.oasis.opendocument.presentation",
"application/x-vnd.oasis.opendocument.spreadsheet",
"application/x-vnd.oasis.opendocument.chart",
"application/x-vnd.oasis.opendocument.image",
"application/x-vnd.oasis.opendocument.formula",
"application/x-vnd.oasis.opendocument.text-master",
"application/x-vnd.oasis.opendocument.text-web",
"application/x-vnd.oasis.opendocument.text-template",
"application/x-vnd.oasis.opendocument.graphics-template",
"application/x-vnd.oasis.opendocument.presentation-template",
"application/x-vnd.oasis.opendocument.spreadsheet-template",
"application/x-vnd.oasis.opendocument.chart-template",
"application/x-vnd.oasis.opendocument.image-template",
"application/x-vnd.oasis.opendocument.formula-template",
"image/bmp",
"image/gif",
"image/jpeg",
"image/png",
"image/tiff",
"image/vnd.wap.wbmp",
"image/x-icon",
"image/x-psd",
"image/x-xcf",
"application/zip",
"application/x-tar",
"application/x-gzip",
"application/x-bzip",
"application/x-tika-java-class",
"audio/mpeg",
"application/x-midi",
"audio/midi",
"audio/basic",
"audio/x-wav",
"audio/x-aiff"
            }</arg>
            <arg>tikaExtractor</arg>
        </initMethod>
    </component>
</components>

標準では、Apache Tika を利用することにより、MS Office 系ファイルや PDF ファイルからの文字列抽出が可能です。 音声ファイルや画像からはメタ情報を取得することができます。

使用方法

以下のように ExtractorFactory を DI して、利用することができます。

    @Resource
    protected ExtractorFactory extractorFactory;
    :
    InputStream in = ... ex. new FileInputStream("/tmp/text.doc") ...;
    String mimeType = ... ex. "application/msword" ...;
    Extractor extractor = extractorFactory.getExtractor(mimeType);
    ExtractData extractData = extractor.getText(in);
    String content = extractData.getContent();
    // content に text.doc 内の文字列だけ入る
    for (String key : extractData.getKeySet()) {
        String[] values = extractData.getValues(key);
        // values にはメタ情報が入る
    }
    :

各種Extractor

Extractor を追加する場合は、ExtractorFactory にも追加してください。

TextExtractor

テキストファイルからテキストを抽出します。

<component name="textExtractor" class="org.seasar.robot.extractor.impl.TextExtractor"/>

XmlExtractor

XML ファイルからテキストを抽出します。

<component name="xmlExtractor" class="org.seasar.robot.extractor.impl.XmlExtractor"/>

HtmlExtractor

HTML ファイルからテキストを抽出します。

<component name="htmlExtractor" class="org.seasar.robot.extractor.impl.HtmlExtractor"/>

HtmlXpathExtractor

HTML ファイルから XPath で指定してテキストを抽出します。

<component name="htmlXpathExtractor" class="org.seasar.robot.extractor.impl.HtmlXpathExtractor">
    <property name="targetNodePath">"//HTML/BODY | //@alt | //@title"</property>
    <initMethod name="addFeature">
        <arg>"http://xml.org/sax/features/namespaces"</arg>
        <arg>"false"</arg>
    </initMethod>
</component>

TikaExtractor

Apache Tika を利用して様々なファイルからテキストを抽出します。 ファイルの種類は自動的に判定されます。

<component name="tikaExtractor" class="org.seasar.robot.extractor.impl.TikaExtractor"/>

CommandExtractor

コマンドライン呼び出しによりテキスト抽出を行う Extractor です。 たとえば、以下のように設定することで pdftotext コマンドを利用してテキスト抽出ができます。

<component name="pdfCmdExtractor" class="org.seasar.robot.extractor.impl.CommandExtractor">
    <property name="command">"pdftotext $INPUT_FILE $OUTPUT_FILE"</property>
    <property name="outputEncoding">"UTF-8"</property>
</component>

$INPUT_FILE は変換元のファイルパス、$OUTPUT_FILE は変換後のファイルパスです。 これらのファイルは S2Robot により一時的に作成され、テキスト抽出後に削除されます。 outputEncoding は $OUTPUT_FILE のエンコーディングです。 outputEncoding を正しく設定しないと文字化けの原因になります。