Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
تحويل ملفات PDF إلى DOCX و TXT.
poppler-utils
على نظام تشغيلكpip
يمكنك تثبيت تحويل من خلال pip
باستخدام الأمر: pip install tahweel
git clone git@github.com:ieasybooks/tahweel.git
poetry install
tahweel "./pdfs"
JSON
الخاص بك من Google Cloud Platform إلى الاختيار --service-account-credentials
--pdf2image-thread-count
. حسب قوة حاسبك يمكن تقليل أو زيادة هذه القيمة. القيمة الافتراضية هي 8
--processor-max-workers
. حسب جودة اتصال الانترنت لديك يمكن تقليل أو زيادة هذه القيمة. القيمة الافتراضية هي 8
tree_to_tree
أو side_by_side
إلى الاختيار --dir-output-type
. القيمة الأولى وهي tree_to_tree
ستقوم بإنشاء مجلد جديد بنفس ترتيب المجلد الأصلي لكل نوع من أنواع المخرجات TXT و DOCX. القيمة الثانية وهي side_by_side
ستقوم بإنشاء ملفات TXT و DOCX بجانب ملفات PDF داخل المجلد الأصلي. القيمة الافتراضية هي tree_to_tree
--txt-page-separator
. القيمة الافتراضية هي PAGE_SEPARATOR
--docx-remove-newlines
وهذا الأمر مفيد في حال أردت أن تكون عدد صفحات ملف DOCX مساوياً لعدد صفحات ملف PDF. القيمة الافتراضية هي False
--output-formats
. الصيغ المتوفرة:
txt
docx
--output-dir
. إذا لم تُحدّد مجلد الإخراج ستُكتب المخرجات بناء على مسارات الملفات والمجلدات التي أعطيتها لتحويل➜ tahweel --help
usage: tahweel --service-account-credentials SERVICE_ACCOUNT_CREDENTIALS [--pdf2image-thread-count PDF2IMAGE_THREAD_COUNT] [--processor-max-workers PROCESSOR_MAX_WORKERS]
[--dir-output-type {tree_to_tree,side_by_side}] [--txt-page-separator TXT_PAGE_SEPARATOR] [--docx-remove-newlines] [--output-dir OUTPUT_DIR] [--skip-output-check] [-h] [--version]
files_or_dirs_paths [files_or_dirs_paths ...]
positional arguments:
files_or_dirs_paths Path to the file or directory to be processed.
options:
--service-account-credentials SERVICE_ACCOUNT_CREDENTIALS
(Path, required) Path to the service account credentials JSON file.
--pdf2image-thread-count PDF2IMAGE_THREAD_COUNT
(int, default=8) Number of threads to use for PDF to image conversion using `pdf2image` package.
--processor-max-workers PROCESSOR_MAX_WORKERS
(int, default=8) Number of threads to use while performing OCR on PDF pages.
--dir-output-type {tree_to_tree,side_by_side}
Use this argument when processing a directory. `tree_to_tree` means the output will be in a new directory beside the input directory with the same structure, while `side_by_side`
means the output will be in the same input directory beside each file.
--txt-page-separator TXT_PAGE_SEPARATOR
(str, default=PAGE_SEPARATOR) Separator to use between pages in the output TXT file.
--docx-remove-newlines
(bool, default=False) Remove newlines from the output DOCX file. Useful if you want DOCX and PDF to have the same page count.
--output-dir OUTPUT_DIR
(pathlib.Path | None, default=None) Path to the output directory. This overrides the default output directory behavior.
--skip-output-check (bool, default=False) Use this flag in development only to skip the output check.
-h, --help show this help message and exit
--version show program's version number and exit
tahweel "./pdfs/1.pdf" \
--service-account-credentials "./service_account_credentials.json" \
--pdf2image-thread-count 8 \
--processor-max-workers 8 \
--txt-page-separator PAGE_SEPARATOR
tahweel "./pdfs/1.pdf" "./pdfs/2.pdf" "./other_pdfs" \
--service-account-credentials "./service_account_credentials.json" \
--pdf2image-thread-count 8 \
--processor-max-workers 8 \
--txt-page-separator PAGE_SEPARATOR
tahweel "./pdfs" \
--service-account-credentials "./service_account_credentials.json" \
--pdf2image-thread-count 8 \
--processor-max-workers 8 \
--dir-output-type tree_to_tree \
--txt-page-separator PAGE_SEPARATOR \
--docx-remove-newlines
يمكنك استخدام تحويل من خلال الشيفرة البرمجية كالتالي:
from concurrent.futures import ThreadPoolExecutor
from pathlib import Path
from tahweel.enums import TahweelType
from tahweel.managers import PdfFileManager
from tahweel.processors import GoogleDriveOcrProcessor
from tahweel.writers import DocxWriter, TxtWriter
from tqdm import tqdm
def main():
processor = GoogleDriveOcrProcessor('./service_account_credentials.json')
pdf_file_manager = PdfFileManager(Path('./pdfs/1.pdf'), 8)
pdf_file_manager.to_images()
with ThreadPoolExecutor(max_workers=8) as executor:
content = list(
tqdm(executor.map(processor.process, pdf_file_manager.images_paths), total=pdf_file_manager.pages_count()),
)
TxtWriter(pdf_file_manager.txt_file_path(TahweelType.FILE)).write(content, 'PAGE_SEPARATOR')
DocxWriter(pdf_file_manager.docx_file_path(TahweelType.FILE)).write(content, False)
if __name__ == '__main__':
main()
إذا كان لديك Docker على حاسبك، فالطريقة الأسهل لاستخدام تحويل هي من خلاله. الأمر التالي يقوم بتنزيل Docker image الخاصة بتحويل وتحويل ملف PDF باستخدام تقنيات Google Drive OCR وإخراج النتائج في المجلد الحالي:
docker run -it --rm -v "$PWD:/tahweel" ghcr.io/ieasybooks/tahweel \
"./pdfs/1.pdf" \
--service-account-credentials "./service_account_credentials.json" \
--pdf2image-thread-count 8 \
--processor-max-workers 8 \
--dir-output-type tree_to_tree \
--txt-page-separator PAGE_SEPARATOR \
--docx-remove-newlines
يمكنك تمرير أي خيار من خيارات مكتبة تحويل المُوضّحة في الأعلى، ولكن يجب مُراعاة تنفيذ الأمر من داخل المجلد الذي يحتوي على ملفات PDF المراد تحويلها وملف Service Account Credentials الخاص بك.
تم الاعتماد بشكل كبير على مستودع ocrarian.py لإنجاز تحويل بشكل أسرع، فجزى الله من عمل عليه خير الجزاء.
FAQs
تحويل ملفات PDF إلى Word و TXT
We found that tahweel demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.