Skip to content

Latest commit

 

History

History
354 lines (239 loc) · 9.57 KB

File metadata and controls

354 lines (239 loc) · 9.57 KB

MarkPDFDown

English | 中文 | 日本語 | Русский | فارسی | العربية

Size Pulls Tag License

أداة قوية تستخدم نماذج اللغة الكبيرة متعددة الوسائط لتحويل ملفات PDF إلى تنسيق Markdown.

تطبيق سطح المكتب

تريد واجهة رسومية؟ جرب تطبيق سطح المكتب الخاص بنا للحصول على تجربة أكثر سهولة!

npx -y markpdfdown

لقطة شاشة تطبيق سطح المكتب

عرض مستودع تطبيق سطح المكتب

نظرة عامة

تم تصميم MarkPDFDown لتبسيط عملية تحويل مستندات PDF إلى نص Markdown نظيف وقابل للتعديل. من خلال الاستفادة من نماذج الذكاء الاصطناعي متعددة الوسائط المتقدمة عبر LiteLLM، يمكنها استخراج النص بدقة، والحفاظ على التنسيق، والتعامل مع هياكل المستندات المعقدة بما في ذلك الجداول والصيغ والرسوم البيانية.

المميزات

  • تحويل PDF إلى Markdown: تحويل أي مستند PDF إلى Markdown منسق بشكل جيد
  • تحويل الصور إلى Markdown: تحويل الصور إلى Markdown منسق بشكل جيد
  • دعم متعدد المزودين: يدعم OpenAI وOpenRouter من خلال LiteLLM
  • واجهة سطر أوامر مرنة: أوضاع استخدام تعتمد على الملفات والأنابيب
  • الحفاظ على التنسيق: يحافظ على العناوين والقوائم والجداول وعناصر التنسيق الأخرى
  • اختيار نطاق الصفحات: تحويل نطاقات صفحات محددة من مستندات PDF
  • بنية معمارية نمطية: قاعدة شيفرة نظيفة وقابلة للصيانة مع فصل المسؤوليات

عرض توضيحي

التثبيت

باستخدام uv (موصى به)

# تثبيت uv إذا لم يكن مثبتًا بالفعل
curl -LsSf https://astral.sh/uv/install.sh | sh

# استنساخ المستودع
git clone https://github.com/MarkPDFdown/markpdfdown.git
cd markpdfdown

# تثبيت التبعيات وإنشاء بيئة افتراضية
uv sync

# تثبيت الحزمة في وضع التطوير
uv pip install -e .

باستخدام conda

conda create -n markpdfdown python=3.9
conda activate markpdfdown

# استنساخ المستودع
git clone https://github.com/MarkPDFdown/markpdfdown.git
cd markpdfdown

# تثبيت التبعيات
pip install -e .

التكوين

يستخدم MarkPDFDown متغيرات البيئة للتكوين. قم بإنشاء ملف .env في دليل مشروعك:

# نسخ التكوين النموذجي
cp .env.sample .env

قم بتحرير ملف .env بإعداداتك:

# تكوين النموذج
MODEL_NAME=gpt-4o

# مفاتيح API (يكتشفها LiteLLM تلقائيًا)
OPENAI_API_KEY=your-openai-api-key
# أو لـ OpenRouter
OPENROUTER_API_KEY=your-openrouter-api-key

# معلمات اختيارية
TEMPERATURE=0.3
MAX_TOKENS=8192
RETRY_TIMES=3

النماذج المدعومة

نماذج OpenAI

MODEL_NAME=gpt-4o
MODEL_NAME=gpt-4o-mini
MODEL_NAME=gpt-4-vision-preview

نماذج OpenRouter

MODEL_NAME=openrouter/anthropic/claude-3.5-sonnet
MODEL_NAME=openrouter/google/gemini-pro-vision
MODEL_NAME=openrouter/meta-llama/llama-3.2-90b-vision

الاستخدام

وضع الملف (موصى به)

# التحويل الأساسي
markpdfdown --input document.pdf --output output.md

# تحويل نطاق صفحات محدد
markpdfdown --input document.pdf --output output.md --start 1 --end 10

# تحويل صورة إلى markdown
markpdfdown --input image.png --output output.md

# استخدام وحدة python
python -m markpdfdown --input document.pdf --output output.md

وضع الأنبوب (متوافق مع Docker)

# PDF إلى markdown عبر الأنبوب
markpdfdown < document.pdf > output.md

# استخدام وحدة python
python -m markpdfdown < document.pdf > output.md

الاستخدام المتقدم

# تحويل الصفحات 5-15 من PDF
markpdfdown --input large_document.pdf --output chapter.md --start 5 --end 15

# معالجة ملفات متعددة
for file in *.pdf; do
    markpdfdown --input "$file" --output "${file%.pdf}.md"
done

استخدام Docker

# بناء الصورة (إذا لزم الأمر)
docker build -t markpdfdown .

# التشغيل مع متغيرات البيئة
docker run -i \
  -e MODEL_NAME=gpt-4o \
  -e OPENAI_API_KEY=your-api-key \
  markpdfdown < input.pdf > output.md

# استخدام OpenRouter
docker run -i \
  -e MODEL_NAME=openrouter/anthropic/claude-3.5-sonnet \
  -e OPENROUTER_API_KEY=your-openrouter-key \
  markpdfdown < input.pdf > output.md

إعداد التطوير

أدوات جودة الكود

يستخدم هذا المشروع ruff للتحقق والتنسيق، و pre-commit لفحوصات جودة الكود التلقائية.

تثبيت تبعيات التطوير

# إذا كنت تستخدم uv
uv sync --group dev

# إذا كنت تستخدم pip
pip install -e ".[dev]"

إعداد خطافات pre-commit

# تثبيت خطافات pre-commit
pre-commit install

# تشغيل pre-commit على جميع الملفات (اختياري)
pre-commit run --all-files

تنسيق الكود والتحقق منه

# تنسيق الكود باستخدام ruff
ruff format

# تشغيل فحوصات التحقق
ruff check

# إصلاح المشكلات القابلة للإصلاح التلقائي
ruff check --fix

المتطلبات

  • Python 3.9+
  • uv (موصى به لإدارة الحزم) أو conda/pip
  • التبعيات المحددة في pyproject.toml
  • الوصول إلى مزودي LLM المدعومين (OpenAI أو OpenRouter)

البنية المعمارية

يتبع المشروع بنية معمارية نمطية:

src/markpdfdown/
├── __init__.py          # تهيئة الحزمة
├── __main__.py          # نقطة الدخول لـ python -m
├── cli.py               # واجهة سطر الأوامر
├── main.py              # منطق التحويل الأساسي
├── config.py            # إدارة التكوين
└── core/                # الوحدات الأساسية
    ├── llm_client.py    # تكامل LiteLLM
    ├── file_worker.py   # معالجة الملفات
    └── utils.py         # الوظائف المساعدة

المساهمة

نرحب بالمساهمات! لا تتردد في إرسال طلب سحب.

  1. انسخ المستودع (Fork)
  2. أنشئ فرع الميزة الخاص بك (git checkout -b feature/amazing-feature)
  3. قم بإعداد بيئة التطوير:
uv sync --group dev
pre-commit install
  1. قم بإجراء تغييراتك وتأكد من جودة الكود:
ruff format
ruff check --fix
pre-commit run --all-files
  1. قم بتنفيذ تغييراتك (git commit -m 'feat: Add some amazing feature')
  2. ادفع إلى الفرع (git push origin feature/amazing-feature)
  3. افتح طلب سحب

يرجى التأكد من أن الكود الخاص بك يتبع معايير الترميز الخاصة بالمشروع عن طريق تشغيل أدوات التحقق والتنسيق قبل الإرسال.

الترخيص

هذا المشروع مرخص بموجب Apache License 2.0. راجع ملف LICENSE للحصول على التفاصيل.

شكر وتقدير

  • شكرًا لمطوري LiteLLM لتوفير وصول موحد إلى LLM
  • شكرًا لمطوري نماذج الذكاء الاصطناعي متعددة الوسائط التي تدعم هذه الأداة
  • مستوحى من الحاجة إلى أدوات أفضل لتحويل PDF إلى Markdown