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 libreofficeOCR (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)
| File | Size | Uploaded | |
|---|---|---|---|
| ms_file_toolkit-0.6.0.tar.gz | 44.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|