پردازش فایل‌ها

علاوه بر داده‌های متن خام، شما ممکن است بخواهید اطلاعات را از سایر انواع فایل‌ها مانند ارائه‌های پاورپوینت یا فایل‌های PDF استخراج کنید.

شما می‌توانید از بارگذارهای اسناد LangChain برای تجزیه فایل‌ها به یک فرمت متنی استفاده کنید که می‌تواند به مدل‌های زبانی بخورد.

پارس کردن بر اساس نوع MIME

در اینجا، ما به پارس کردن بر اساس نوع MIME (Multipurpose Internet Mail Extensions) که بسیار مفید است برای برنامه‌های مبتنی بر استخراج اطلاعات می‌پردازیم، اگر شما قصد دارید کد سروری را بنویسید که فایل‌های آپلود شده کاربر را پذیرفته یا پردازش کند.

در این حالت، بهتر است فرض کنید که پسوند فایل ارائه شده توسط کاربر اشتباه است و به جای آن نوع MIME را از محتوای دودویی فایل استنباط کنید.

بیایید چند محتوا را دانلود کنیم. این یک فایل HTML خواهد بود، اما کد زیر با سایر انواع فایل‌ها هم کار خواهد کرد.

import requests

response = requests.get("https://en.wikipedia.org/wiki/Car")
data = response.content
data[:20]
b'<!DOCTYPE html>\n<htm'

تنظیم پارسرها

import magic
from langchain.document_loaders.parsers import BS4HTMLParser, PDFMinerParser
from langchain.document_loaders.parsers.generic import MimeTypeBasedParser
from langchain.document_loaders.parsers.txt import TextParser
from langchain_community.document_loaders import Blob

HANDLERS = {
    "application/pdf": PDFMinerParser(),
    "text/plain": TextParser(),
    "text/html": BS4HTMLParser(),
}

MIMETYPE_BASED_PARSER = MimeTypeBasedParser(
    handlers=HANDLERS,
    fallback_parser=None,
)

mime = magic.Magic(mime=True)
mime_type = mime.from_buffer(data)

blob = Blob.from_data(
    data=data,
    mime_type=mime_type,
)

parser = HANDLERS[mime_type]
documents = parser.parse(blob=blob)
print(documents[0].page_content[:30].strip())
Car - Wikipedia