Skip to main content

ms-file-toolkit

Microsoft, OpenDocument va PDF fayllarni o'qish va yozish uchun Python toolkit — AI function calling (Claude, GPT va h.k.) uchun tayyor tool schemalari, xavfsizlik nazorati, avtomatik format aniqlash, format konvertatsiya va CLI bilan.

O'rnatish

pip install -r requirements.txt

Yoki paket sifatida:

pip install -e ".[ai,dev]"

Qo'llab-quvvatlanadigan formatlar

Format O'qish Yozish
.docx matn, jadvallar, metama'lumot yaratish, matn qo'shish/almashtirish, sarlavha, rasm, sahifa bo'linishi
.xlsx varaq nomlari, ma'lumotlar, o'lcham xulosasi yaratish, varaq/qator qo'shish, formula, formatlash, panellarni muzlatish, diagramma
.pptx slayd matnlari, slaydlar soni, notes yaratish, slayd/rasm qo'shish, fon rangi, diagramma
.pdf matn, jadvallar, metama'lumot yaratish, birlashtirish, bo'lish
.csv qatorlar, sarlavha, o'lcham xulosasi yaratish, qator qo'shish
.odt (OpenDocument Text) matn yaratish (sarlavha + paragraflar)
.ods (OpenDocument Spreadsheet) varaq nomlari, ma'lumotlar yaratish
.odp (OpenDocument Presentation) slayd matnlari, slaydlar soni yaratish
Rasm (.png/.jpg/...) o'lcham/format ma'lumoti, OCR format/o'lcham konvertatsiya, thumbnail
.zip tarkib ro'yxati, fayl o'qish arxiv yaratish, chiqarish (zip-slip himoyasi bilan)
.doc / .xls / .ppt (eski) read_legacy_file (LibreOffice orqali)
Har qanday (avtomatik) read_any_file, get_file_info

Eski formatlar va konvertatsiya uchun tizimda LibreOffice (soffice) kerak: apt-get install libreoffice OCR (read_image_text) uchun Tesseract kerak: apt-get install tesseract-ocr

Format konvertatsiya

from ms_toolkit import dispatch

dispatch("convert_docx_to_pdf", {"file_path": "hujjat.docx", "output_path": "hujjat.pdf"})
dispatch("convert_pptx_to_images", {"file_path": "taqdimot.pptx", "output_dir": "slaydlar/"})
dispatch("convert_pdf_to_images", {"file_path": "hujjat.pdf", "output_dir": "sahifalar/"})
dispatch("convert_xlsx_to_csv", {"file_path": "hisobot.xlsx", "output_dir": "csv_export/"})

convert_pptx_to_images va convert_pdf_to_images tashqi system-binary talab qilmaydi (PyMuPDF orqali); convert_*_to_pdf funksiyalari LibreOffice orqali ishlaydi.

Xavfsizlik

Fayl yo'llari AI tomonidan tanlanadi, shuning uchun path traversal himoyasi bor (ms_toolkit/security.py) — bu himoya yangi qo'shilgan barcha tool'larga (CSV, OpenDocument, rasm, arxiv, konvertatsiya) avtomatik qo'llaniladi:

export MS_TOOLKIT_BASE_DIR=/home/bot/user_files
dispatch("read_docx_text", {"file_path": "../../etc/passwd"})
# -> {"error": "Xavfsizlik xatosi: ..."}

ZIP arxivlarni chiqarishda (extract_archive) qo'shimcha zip-slip himoyasi bor — arxiv ichidagi hech qanday yozuv output_dir tashqarisiga chiqib keta olmaydi.

CLI

ms-toolkit list
ms-toolkit run create_docx '{"file_path": "a.docx", "title": "Salom", "overwrite": true}'
ms-toolkit run read_any_file '{"file_path": "hujjat.xlsx"}'

Testlar

pip install -e ".[dev]"
pytest tests/ -v          # 40 ta test (23 asosiy + 17 kengaytirilgan)

Function calling bilan (Claude API)

from ms_toolkit import TOOLS, dispatch
import anthropic

client = anthropic.Anthropic()
response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    tools=TOOLS,
    messages=[{"role": "user", "content": "test.xlsx faylida nechta qator bor?"}],
)

for block in response.content:
    if block.type == "tool_use":
        print(dispatch(block.name, block.input))

Barcha tool'lar ro'yxati (62 ta)

  • DOCX (9): read_docx_text, read_docx_tables, get_docx_metadata, create_docx, append_docx_text, replace_docx_text, add_docx_heading, add_docx_image, add_docx_page_break
  • XLSX (10): get_xlsx_sheet_names, read_xlsx_data, get_xlsx_summary, create_xlsx, add_xlsx_sheet, append_xlsx_rows, set_xlsx_formula, format_xlsx_cells, freeze_xlsx_panes, add_xlsx_chart
  • PPTX (8): read_pptx_text, get_pptx_slide_count, extract_pptx_notes, create_pptx, add_pptx_slide, add_pptx_image, set_pptx_background_color, add_pptx_chart
  • PDF (6): read_pdf_text, read_pdf_tables, get_pdf_metadata, create_pdf, merge_pdfs, split_pdf
  • CSV (4): read_csv_data, get_csv_summary, create_csv, append_csv_rows
  • OpenDocument (8): read_odt_text, get_ods_sheet_names, read_ods_data, read_odp_text, get_odp_slide_count, create_odt, create_ods, create_odp
  • Rasm (4): get_image_info, read_image_text, convert_image, create_thumbnail
  • Arxiv (4): list_archive_contents, read_archive_file, create_archive, extract_archive
  • Konvertatsiya (6): convert_docx_to_pdf, convert_pptx_to_pdf, convert_xlsx_to_pdf, convert_pdf_to_images, convert_pptx_to_images, convert_xlsx_to_csv
  • Eski formatlar (1): read_legacy_file
  • Auto-detect (2): read_any_file, get_file_info

Struktura

ms_toolkit/
  __init__.py
  docx_tool.py / docx_writer.py
  xlsx_tool.py / xlsx_writer.py
  pptx_tool.py / pptx_writer.py
  pdf_tool.py / pdf_writer.py
  csv_tool.py / csv_writer.py
  opendoc_tool.py / opendoc_writer.py   # .odt/.ods/.odp
  image_tool.py / image_writer.py       # rasm + OCR
  archive_tool.py / archive_writer.py   # ZIP
  convert_tool.py                       # format konvertatsiya
  legacy_tool.py
  auto_tool.py
  security.py
  cli.py
  schemas.py
  registry.py
tests/
pyproject.toml
requirements.txt

Litsenziya

MIT

Release files for ms-file-toolkit 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ms-file-toolkit 0.6.0
File Size Uploaded
ms_file_toolkit-0.6.0.tar.gz 44.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ms-file-toolkit 0.6.0
File Interpreter ABI Platform
ms_file_toolkit-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 92.7 kB

Release files / ms_file_toolkit-0.6.0.tar.gz

Download URL ms_file_toolkit-0.6.0.tar.gz
Size 44.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6a71dd5e832484cf690ab27678cbed25f9632240843007ef0872c072b2f88d1b
BLAKE2b-256 checksum
How to use checksums
73a8b2d9d0540a7e498855cc3d1f1511050e1baede94f0f57dfffb4b0a8c974a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / ms_file_toolkit-0.6.0-py3-none-any.whl

Download URL ms_file_toolkit-0.6.0-py3-none-any.whl
Size 48.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b79b380cb9eae0e00970f127d794ba33aa4cfe528aa9b718b364537fac3104d4
BLAKE2b-256 checksum
How to use checksums
5630ee8678d99ebaafd73f3b42825ffc30369602cac24170cd774aa7ac8a5929
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page