Java Technologies Custom Tika Parsers তৈরি করা গাইড ও নোট

384

Apache Tika-এর ডিফল্ট পার্সার (Parser) বিভিন্ন ফাইল ফরম্যাট সাপোর্ট করে যেমন: PDF, MS Office, HTML ইত্যাদি। তবে কিছু বিশেষ ধরনের ডকুমেন্ট প্রসেস করতে গেলে কাস্টম পার্সার তৈরি করার প্রয়োজন হতে পারে। কাস্টম পার্সার তৈরি করলে আপনি নিজের নিয়ম অনুযায়ী ডেটা এক্সট্রাকশন (Extraction) করতে পারবেন।


কাস্টম Tika পার্সার কী?

কাস্টম Tika পার্সার হলো এমন একটি ক্লাস যা Apache Tika-এর Parser ইন্টারফেস ইমপ্লিমেন্ট করে এবং ডকুমেন্ট প্রসেস করার সময় আপনার নির্দিষ্ট লজিক অনুসরণ করে।


কাস্টম পার্সার তৈরির ধাপ

১. Tika Parser ইন্টারফেস ইমপ্লিমেন্ট করা

প্রথমে org.apache.tika.parser.Parser ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।

২. পার্সার রেজিস্টার করা

Tika service loader মেকানিজম ব্যবহার করে কাস্টম পার্সারকে রেজিস্টার করতে হবে, যেন Tika এটি চিনতে পারে।


উদাহরণ: কাস্টম Tika পার্সার

ধরা যাক, আমরা একটি কাস্টম পার্সার তৈরি করতে চাই যা .example এক্সটেনশনের ফাইল থেকে নির্দিষ্ট ডেটা এক্সট্রাক্ট করবে।

১. Maven ডিপেন্ডেন্সি

pom.xml ফাইলে Tika Core যুক্ত করুন:

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.x.x</version>
</dependency>

২. কাস্টম পার্সার কোড

import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.XHTMLContentHandler;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;

import java.io.IOException;
import java.io.InputStream;
import java.util.Set;

import java.util.Collections;

public class CustomExampleParser implements Parser {
    @Override
    public Set<org.apache.tika.mime.MediaType> getSupportedTypes(ParseContext context) {
        return Collections.singleton(org.apache.tika.mime.MediaType.application("x-example"));
    }

    @Override
    public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)
            throws IOException, SAXException {
        XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
        xhtml.startDocument();

        // Custom logic for parsing the .example file
        byte[] bytes = stream.readAllBytes();
        String content = new String(bytes);

        xhtml.element("p", "Custom Extracted Content: " + content.trim());

        xhtml.endDocument();
    }
}

৩. পার্সার রেজিস্টার করা

Tika-এর service loader মেকানিজম ব্যবহার করতে META-INF/services ডিরেক্টরি তৈরি করুন।

ফাইল পাথ: src/main/resources/META-INF/services/org.apache.tika.parser.Parser

এ ফাইলের মধ্যে নিচের লাইনটি যোগ করুন:

com.example.parsers.CustomExampleParser

এখানে com.example.parsers হলো আপনার কাস্টম পার্সারের প্যাকেজ পাথ।


৪. Tika দিয়ে কাস্টম পার্সার ব্যবহার করা

import org.apache.tika.Tika;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.metadata.Metadata;
import org.xml.sax.helpers.DefaultHandler;

import java.io.FileInputStream;

public class CustomParserTest {
    public static void main(String[] args) throws Exception {
        Tika tika = new Tika();
        Parser customParser = new CustomExampleParser();
        ParseContext context = new ParseContext();
        Metadata metadata = new Metadata();

        try (FileInputStream stream = new FileInputStream("sample.example")) {
            customParser.parse(stream, new DefaultHandler(), metadata, context);
        }

        System.out.println("Parsing Complete!");
    }
}

কীভাবে কাজ করে?

  1. CustomExampleParser ইন্টারফেস Parser ইমপ্লিমেন্ট করে।
  2. getSupportedTypes(): এখানে .example টাইপ সাপোর্ট করার জন্য MIME টাইপ উল্লেখ করা হয়েছে।
  3. parse(): ডকুমেন্ট থেকে ডেটা পড়ে এটি প্রসেস করা হয়েছে এবং আউটপুট তৈরি করা হয়েছে।
  4. Tika সার্ভিস লোডার META-INF/services ফাইলের মাধ্যমে কাস্টম পার্সারকে রেজিস্টার করে।

সারাংশ

Apache Tika-এর কাস্টম পার্সার ব্যবহার করে আপনি নির্দিষ্ট ফাইল ফরম্যাট থেকে কাস্টম লজিক প্রয়োগ করে ডেটা এক্সট্রাক্ট করতে পারবেন। এটি বিশেষ ক্ষেত্রে প্রয়োজন হয় যখন ডিফল্ট Tika পার্সার ফাইল ফরম্যাট সাপোর্ট করে না।

Content added By

Custom File Type এর জন্য Tika Parser তৈরি করা

415

অ্যাপাচি টিকা একটি ওপেন-সোর্স content analysis toolkit যা বিভিন্ন ফাইল ফরম্যাট থেকে ডেটা এবং মেটাডেটা এক্সট্র্যাক্ট করতে পারে। কিন্তু অনেক সময় প্রয়োজন হয় custom file types এর জন্য একটি বিশেষ Tika Parser তৈরি করার। এটি তখনই প্রয়োজন হয় যখন টিকার ডিফল্ট পার্সার কোনো নির্দিষ্ট ফাইল ফরম্যাট সাপোর্ট করে না।


Custom Parser কী এবং কেন প্রয়োজন?

Custom Parser হলো এমন একটি পার্সার যা টিকার সাথে ইন্টিগ্রেট করা হয় এবং নির্দিষ্ট ফাইল ফরম্যাট থেকে টেক্সট বা মেটাডেটা এক্সট্র্যাক্ট করার কাজ করে।

যখন আপনার কাছে এমন একটি ফাইল ফরম্যাট থাকে যা:

  • Tika এর ডিফল্ট পার্সার সাপোর্ট করে না।
  • স্পেশাল কন্টেন্ট বা লজিক দিয়ে প্রসেস করতে হয়।
  • নির্দিষ্ট ব্যাবসায়িক প্রয়োজন অনুযায়ী পার্সিং দরকার।

Custom Tika Parser তৈরি করার ধাপ

১. Maven প্রজেক্ট সেটআপ

প্রথমে একটি Maven প্রজেক্ট তৈরি করুন এবং নিচের Tika Dependencies যোগ করুন:

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers-standard-package</artifactId>
    <version>2.9.0</version>
</dependency>

২. Custom Parser ইমপ্লিমেন্ট করা

Custom Parser তৈরি করতে AbstractParser ক্লাসকে এক্সটেন্ড করতে হবে এবং প্রয়োজনীয় parse() মেথড ওভাররাইড করতে হবে।

নিচে একটি উদাহরণ দেখানো হলো যেখানে ".custom" ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করা হয়েছে:

import org.apache.tika.parser.AbstractParser;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.sax.XHTMLContentHandler;
import org.xml.sax.ContentHandler;

import java.io.InputStream;
import java.util.Set;
import java.util.Collections;

public class CustomFileParser extends AbstractParser {

    private static final Set<org.apache.tika.mime.MediaType> SUPPORTED_TYPES =
            Collections.singleton(org.apache.tika.mime.MediaType.application("x-custom"));

    @Override
    public Set<org.apache.tika.mime.MediaType> getSupportedTypes(ParseContext context) {
        return SUPPORTED_TYPES; // ফাইল টাইপ রেজিস্ট্রেশন
    }

    @Override
    public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) {
        try {
            // XHTMLContentHandler ব্যবহার করে টেক্সট আউটপুট তৈরি
            XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
            xhtml.startDocument();
            
            // Custom ফাইল থেকে ডেটা পড়া
            String extractedText = "This is a custom parsed content.";
            xhtml.characters(extractedText); 
            
            xhtml.endDocument();
        } catch (Exception e) {
            throw new RuntimeException("Error while parsing custom file", e);
        }
    }
}

৩. Custom MIME টাইপ ডিফাইন করা

Custom ফাইল টাইপের জন্য একটি MIME টাইপ ডিফাইন করতে হবে। tika-mimetypes.xml নামে একটি কনফিগারেশন ফাইল তৈরি করুন:

<mime-info>
    <mime-type type="application/x-custom">
        <glob pattern="*.custom"/>
    </mime-type>
</mime-info>

৪. Service Loader ফাইল তৈরি করা

Custom Parser কে Tika এর সাথে রেজিস্টার করতে হলে Service Loader ফাইল তৈরি করতে হবে।

ফাইল পাথ:

src/main/resources/META-INF/services/org.apache.tika.parser.Parser

ফাইল কন্টেন্ট:

com.example.CustomFileParser

৫. Custom Parser টেস্ট করা

নিচে একটি টেস্ট কোড রয়েছে যা Custom Parser ব্যবহার করে ".custom" ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করে:

import org.apache.tika.Tika;
import java.io.File;

public class CustomParserTest {
    public static void main(String[] args) throws Exception {
        Tika tika = new Tika();
        
        // Custom ফাইল প্রসেস করা
        File file = new File("example.custom");
        String content = tika.parseToString(file);
        
        System.out.println("Extracted Content: " + content);
    }
}

কীভাবে এটি কাজ করে?

  1. Custom Parser Implementation: নতুন Parser তৈরি করা হয়েছে যা .custom ফাইল সাপোর্ট করে।
  2. MIME Type Registration: Custom MIME টাইপ application/x-custom রেজিস্টার করা হয়েছে।
  3. Service Loader: Tika এর সাথে নতুন Parser রেজিস্টার করার জন্য Service Loader ব্যবহার করা হয়েছে।
  4. Tika Integration: Tika অ্যাপ্লিকেশন থেকে Custom Parser অটোমেটিক্যালি লোড এবং এক্সিকিউট করা হয়েছে।

আউটপুট

ফাইল example.custom থেকে নিচের আউটপুট আসতে পারে:

Extracted Content: This is a custom parsed content.

সারাংশ

Custom Tika Parser তৈরি করে আপনি বিশেষ ধরণের ফাইল ফরম্যাট থেকে ডেটা এবং মেটাডেটা এক্সট্র্যাক্ট করতে পারেন। এটি Tika MIME টাইপ রেজিস্ট্রেশন, Custom Parser Implementation, এবং Service Loader এর সমন্বয়ে কার্যকরী হয়। আপনার প্রয়োজন অনুযায়ী ফাইল প্রসেসিং লজিক সংযোগ করে এটি উন্নত করা সম্ভব।

Content added By

Tika Configuration এবং Customization

328

অ্যাপাচি টিকা (Apache Tika) ব্যবহারকারীদের বিভিন্ন ধরনের ফাইল থেকে টেক্সট এবং মেটাডেটা এক্সট্র্যাক্ট করতে সাহায্য করে। তবে নির্দিষ্ট প্রয়োজন অনুযায়ী কনফিগারেশন (Configuration) এবং কাস্টমাইজেশন (Customization) করে Tika-কে আরও কার্যকরী করে তোলা যায়।


Tika Configuration কী?

Tika Configuration হল এমন একটি প্রক্রিয়া যেখানে Tika-র ডিফল্ট আচরণ পরিবর্তন করে নির্দিষ্ট প্রয়োজনীয়তা অনুযায়ী সেটআপ করা হয়। উদাহরণস্বরূপ:

  • নির্দিষ্ট ফাইল টাইপ প্রসেসিং বন্ধ করা
  • পারফরম্যান্স অপ্টিমাইজেশন
  • পার্সার (Parser) বা ডিক্টেটর (Detector) সেটিং পরিবর্তন করা

Tika Customization কী?

Customization এর মাধ্যমে Tika-র Parser, Detector, এবং Content Handler এর জন্য নতুন ইমপ্লিমেন্টেশন যোগ করা হয়।

  • নতুন ফাইল ফরম্যাট সাপোর্ট করা
  • কাস্টম মেটাডেটা এক্সট্র্যাকশন
  • Tika-র এক্সটেনশন তৈরি করা

Tika Configuration ফাইল

Tika কনফিগার করার জন্য tika-config.xml ফাইল ব্যবহার করা হয়। এটি কাস্টম পার্সার, ডিটেক্টর এবং হ্যান্ডলার সেটআপের জন্য ব্যবহৃত হয়।


উদাহরণ: নির্দিষ্ট পার্সার কনফিগার করা

নিচে একটি উদাহরণ দেওয়া হলো যেখানে Tika কনফিগার করা হয়েছে শুধুমাত্র PDF এবং Word Document প্রসেস করার জন্য।

tika-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<tikaConfig>
    <parsers>
        <parser class="org.apache.tika.parser.pdf.PDFParser"/>
        <parser class="org.apache.tika.parser.microsoft.ooxml.OOXMLParser"/>
    </parsers>
</tikaConfig>

কনফিগারেশন ফাইল ব্যবহার করা

আপনার Java প্রোগ্রামে এই কনফিগারেশন ফাইল লোড করতে নিচের মতো কোড ব্যবহার করতে হবে:

import org.apache.tika.Tika;
import org.apache.tika.config.TikaConfig;
import java.io.File;

public class CustomTikaExample {
    public static void main(String[] args) throws Exception {
        // কাস্টম Tika Configuration লোড করা
        TikaConfig config = new TikaConfig("tika-config.xml");
        Tika tika = new Tika(config);

        // ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করা
        File file = new File("example.pdf");
        String text = tika.parseToString(file);

        // আউটপুট
        System.out.println("Extracted Text: " + text);
    }
}

Custom Parser যোগ করা

নতুন ধরনের ফাইল প্রসেস করতে Custom Parser তৈরি করা হয়। নিচে একটি উদাহরণ রয়েছে:

CustomParser.java

import org.apache.tika.parser.AbstractParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.sax.XHTMLContentHandler;
import org.xml.sax.ContentHandler;
import java.io.InputStream;

public class CustomParser extends AbstractParser {
    @Override
    public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) {
        // কাস্টম লজিক এখানে যোগ করুন
        try {
            XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
            xhtml.startDocument();
            xhtml.element("p", "This is a custom parser output.");
            xhtml.endDocument();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Custom Parser কনফিগার করা

tika-config.xml ফাইলে Custom Parser যোগ করুন:

<?xml version="1.0" encoding="UTF-8"?>
<tikaConfig>
    <parsers>
        <parser class="com.example.CustomParser"/>
    </parsers>
</tikaConfig>

কনফিগারেশন অপশন

অপশনব্যাখ্যা
Parsersনির্দিষ্ট ফাইল ফরম্যাটের জন্য পার্সার নির্বাচন করা।
Detectorsফাইল টাইপ সনাক্তকরণ পরিবর্তন করা।
Metadata Filterমেটাডেটা ফিল্টার করে প্রয়োজনীয় তথ্য প্রদর্শন করা।
Custom Content HandlerTika এর আউটপুট টেক্সট কাস্টমাইজ করা।
Encodingনির্দিষ্ট ক্যারেক্টার এনকোডিং সেট করা।

সারসংক্ষেপ

Apache Tika-র Configuration এবং Customization এর মাধ্যমে নির্দিষ্ট চাহিদা অনুযায়ী Tika-র কার্যক্ষমতা বাড়ানো সম্ভব। tika-config.xml ফাইল ব্যবহার করে পার্সার ও ডিটেক্টর কনফিগার করা যায় এবং কাস্টম পার্সার তৈরি করে নতুন ফাইল ফরম্যাট প্রসেস করা যায়। এটি Tika-কে আরও শক্তিশালী ও বহুমুখী টুলে পরিণত করে।

Content added By

উদাহরণ সহ Custom Tika Parser Implementation

282

Apache Tika একটি ওপেন সোর্স টুল যা বিভিন্ন ধরণের ফাইল থেকে টেক্সট ও মেটাডাটা এক্সট্রাক্ট করতে সাহায্য করে। যদি আপনার নিজস্ব কোনো ফাইল ফরম্যাট থাকে যা Tika ডিফল্ট পার্সার সাপোর্ট করে না, তখন Custom Parser ইমপ্লিমেন্ট করা হয়।


Custom Tika Parser কী?

Custom Tika Parser হলো এমন একটি পার্সার যা নির্দিষ্ট ফাইল টাইপ বা ফরম্যাট থেকে ডেটা এক্সট্রাক্ট করার জন্য তৈরি করা হয়। Tika Framework-এর মাধ্যমে আপনি একটি নতুন পার্সার তৈরি করে Tika Parser API তে ইন্টিগ্রেট করতে পারবেন।


Custom Tika Parser তৈরির ধাপ

১. Maven ডিপেনডেন্সি অ্যাড করা

প্রথমে আপনার Maven প্রজেক্টে Tika এর ডিপেনডেন্সি যোগ করতে হবে:

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.9.0</version>
</dependency>

২. Custom Parser ক্লাস তৈরি

একটি নতুন ক্লাস তৈরি করে AbstractParser এক্সটেন্ড করতে হবে এবং পার্সিং লজিক ইমপ্লিমেন্ট করতে হবে।

উদাহরণ: একটি .custom ফাইল থেকে টেক্সট এক্সট্রাকশন

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AbstractParser;
import org.apache.tika.parser.ParseContext;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

public class CustomParser extends AbstractParser {
    private static final long serialVersionUID = 1L;

    // কাস্টম ফাইলের MIME টাইপ সেট করুন
    private static final String MIME_TYPE = "application/x-custom";

    @Override
    public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)
            throws IOException, SAXException, TikaException {
        
        // কাস্টম ফাইল প্রসেসিং লজিক
        byte[] data = stream.readAllBytes();
        String content = new String(data, StandardCharsets.UTF_8);

        // Metadata সেট করুন
        metadata.set(Metadata.CONTENT_TYPE, MIME_TYPE);
        metadata.set("Custom-Header", "Custom Parser Header");

        // Content পাঠান
        handler.characters(content.toCharArray(), 0, content.length());
    }
}

৩. Tika Config ফাইল তৈরি করা

Custom Parser Tika-তে ইন্টিগ্রেট করতে একটি tika-config.xml ফাইল তৈরি করতে হবে।

<?xml version="1.0" encoding="UTF-8"?>
<properties>
    <parsers>
        <parser class="com.example.CustomParser">
            <mime>application/x-custom</mime>
        </parser>
    </parsers>
</properties>

৪. Custom Parser টেস্ট করা

একটি main() মেথড তৈরি করে Custom Parser টেস্ট করা যায়।

import org.apache.tika.Tika;
import org.apache.tika.config.TikaConfig;
import org.apache.tika.metadata.Metadata;

import java.io.File;
import java.io.FileInputStream;

public class CustomParserTest {
    public static void main(String[] args) throws Exception {
        // Custom Tika Config লোড করুন
        TikaConfig tikaConfig = new TikaConfig("tika-config.xml");

        Tika tika = new Tika(tikaConfig);
        File file = new File("example.custom");

        // Custom ফাইল পার্সিং
        Metadata metadata = new Metadata();
        String content = tika.parseToString(new FileInputStream(file), metadata);

        // আউটপুট দেখানো
        System.out.println("Extracted Content: " + content);
        System.out.println("Metadata: " + metadata);
    }
}

ব্যাখ্যা

১. CustomParser Class: এটি AbstractParser এক্সটেন্ড করে এবং parse() মেথডের মাধ্যমে ফাইলের কন্টেন্ট প্রসেস করা হয়।
২. Metadata: ফাইলের মেটাডাটা যেমন Content-Type এবং Custom-Header সেট করা হয়েছে।
৩. tika-config.xml: এটি Tika Framework-এ Custom Parser যোগ করার জন্য ব্যবহার করা হয়।
৪. Testing: একটি .custom ফাইল লোড করে তা থেকে টেক্সট এক্সট্রাকশন ও মেটাডাটা চেক করা হয়েছে।


আউটপুট

Input File (example.custom):

Hello, this is a test content from a custom file.

Output:

Extracted Content: Hello, this is a test content from a custom file.
Metadata: 
Content-Type: application/x-custom
Custom-Header: Custom Parser Header

উপসংহার

Custom Tika Parser তৈরি করার মাধ্যমে আপনি আপনার প্রজেক্টে নতুন ফাইল ফরম্যাট সাপোর্ট করতে পারবেন। এটি আপনার অ্যাপ্লিকেশনের জন্য ফাইল প্রসেসিংকে আরো কাস্টমাইজড ও কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...