--- title: "Tika" id: integrations-tika description: "Tika integration for Haystack" slug: "/integrations-tika" --- ## haystack_integrations.components.converters.tika.converter ### XHTMLParser Bases: HTMLParser Custom parser to extract pages from Tika XHTML content. #### __init__ ```python __init__() -> None ``` Initialize the XHTMLParser. #### handle_starttag ```python handle_starttag(tag: str, attrs: list[tuple[str, str | None]]) -> None ``` Identify the start of a page div. **Parameters:** - **tag** (str) – The HTML tag name. - **attrs** (list\[tuple\[str, str | None\]\]) – The HTML tag attributes. #### handle_endtag ```python handle_endtag(tag: str) -> None ``` Identify the end of a page div. **Parameters:** - **tag** (str) – The HTML tag name. #### handle_data ```python handle_data(data: str) -> None ``` Populate the page content. **Parameters:** - **data** (str) – The text content of an HTML node. ### TikaDocumentConverter Converts files of different types to Documents using Apache Tika. This component uses [Apache Tika](https://tika.apache.org/) for parsing the files and, therefore, requires a running Tika server. For more options on running Tika, see the [official documentation](https://github.com/apache/tika-docker/blob/main/README.md#usage). Usage example: ```python from haystack_integrations.components.converters.tika import TikaDocumentConverter from datetime import datetime converter = TikaDocumentConverter() results = converter.run( sources=["sample.docx", "my_document.rtf", "archive.zip"], meta={"date_added": datetime.now().isoformat()} ) documents = results["documents"] print(documents[0].content) # >> 'This is a text from the docx file.' ``` #### __init__ ```python __init__( tika_url: str = "http://localhost:9998/tika", store_full_path: bool = False ) -> None ``` Create a TikaDocumentConverter component. **Parameters:** - **tika_url** (str) – Tika server URL. - **store_full_path** (bool) – If True, the full path of the file is stored in the metadata of the document. If False, only the file name is stored. #### run ```python run( sources: list[str | Path | ByteStream], meta: dict[str, Any] | list[dict[str, Any]] | None = None, ) -> dict[str, list[Document]] ``` Convert files to Documents. **Parameters:** - **sources** (list\[str | Path | ByteStream\]) – List of file paths or ByteStream objects. - **meta** (dict\[str, Any\] | list\[dict\[str, Any\]\] | None) – Optional metadata to attach to the Documents. This value can be either a list of dictionaries or a single dictionary. If it's a single dictionary, its content is added to the metadata of all produced Documents. If it's a list, the length of the list must match the number of sources, because the two lists will be zipped. If `sources` contains ByteStream objects, their `meta` will be added to the output Documents. **Returns:** - dict\[str, list\[Document\]\] – A dictionary with the following keys: - `documents`: Created Documents