Browse Source
feat: Add Dockerfile, app.py, docker-compose.yml, pdf_to_word.py, and requirements.txt- Add Dockerfile for setting up a Python environment- Add app.py for a Flask application to upload PDF files- Add docker-compose.yml for containerizing the Flask app- Add pdf_to_word.py for converting PDF to Word using pytesseract- Add requirements.txt with necessary dependencies
main
feat: Add Dockerfile, app.py, docker-compose.yml, pdf_to_word.py, and requirements.txt- Add Dockerfile for setting up a Python environment- Add app.py for a Flask application to upload PDF files- Add docker-compose.yml for containerizing the Flask app- Add pdf_to_word.py for converting PDF to Word using pytesseract- Add requirements.txt with necessary dependencies
main
Mam Thenebo
8 months ago
13 changed files with 447 additions and 140 deletions
-
140.gitignore
-
22Dockerfile
-
39app.py
-
16docker-compose.yml
-
318logs/pdf_to_word.log
-
BINoutputs/np11.docx
-
BINoutputs/~$np11.docx
-
46pdf_to_word.py
-
6requirements.txt
-
BINtessdata/.DS_Store
-
BINtessdata/eng.traineddata
-
BINtessdata/fas.traineddata
-
BINuploads/np11.pdf
@ -1,140 +0,0 @@ |
|||
# ---> Python |
|||
# Byte-compiled / optimized / DLL files |
|||
__pycache__/ |
|||
*.py[cod] |
|||
*$py.class |
|||
|
|||
# C extensions |
|||
*.so |
|||
|
|||
# Distribution / packaging |
|||
.Python |
|||
build/ |
|||
develop-eggs/ |
|||
dist/ |
|||
downloads/ |
|||
eggs/ |
|||
.eggs/ |
|||
lib/ |
|||
lib64/ |
|||
parts/ |
|||
sdist/ |
|||
var/ |
|||
wheels/ |
|||
share/python-wheels/ |
|||
*.egg-info/ |
|||
.installed.cfg |
|||
*.egg |
|||
MANIFEST |
|||
|
|||
# PyInstaller |
|||
# Usually these files are written by a python script from a template |
|||
# before PyInstaller builds the exe, so as to inject date/other infos into it. |
|||
*.manifest |
|||
*.spec |
|||
|
|||
# Installer logs |
|||
pip-log.txt |
|||
pip-delete-this-directory.txt |
|||
|
|||
# Unit test / coverage reports |
|||
htmlcov/ |
|||
.tox/ |
|||
.nox/ |
|||
.coverage |
|||
.coverage.* |
|||
.cache |
|||
nosetests.xml |
|||
coverage.xml |
|||
*.cover |
|||
*.py,cover |
|||
.hypothesis/ |
|||
.pytest_cache/ |
|||
cover/ |
|||
|
|||
# Translations |
|||
*.mo |
|||
*.pot |
|||
|
|||
# Django stuff: |
|||
*.log |
|||
local_settings.py |
|||
db.sqlite3 |
|||
db.sqlite3-journal |
|||
|
|||
# Flask stuff: |
|||
instance/ |
|||
.webassets-cache |
|||
|
|||
# Scrapy stuff: |
|||
.scrapy |
|||
|
|||
# Sphinx documentation |
|||
docs/_build/ |
|||
|
|||
# PyBuilder |
|||
.pybuilder/ |
|||
target/ |
|||
|
|||
# Jupyter Notebook |
|||
.ipynb_checkpoints |
|||
|
|||
# IPython |
|||
profile_default/ |
|||
ipython_config.py |
|||
|
|||
# pyenv |
|||
# For a library or package, you might want to ignore these files since the code is |
|||
# intended to run in multiple environments; otherwise, check them in: |
|||
# .python-version |
|||
|
|||
# pipenv |
|||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. |
|||
# However, in case of collaboration, if having platform-specific dependencies or dependencies |
|||
# having no cross-platform support, pipenv may install dependencies that don't work, or not |
|||
# install all needed dependencies. |
|||
#Pipfile.lock |
|||
|
|||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow |
|||
__pypackages__/ |
|||
|
|||
# Celery stuff |
|||
celerybeat-schedule |
|||
celerybeat.pid |
|||
|
|||
# SageMath parsed files |
|||
*.sage.py |
|||
|
|||
# Environments |
|||
.env |
|||
.venv |
|||
env/ |
|||
venv/ |
|||
ENV/ |
|||
env.bak/ |
|||
venv.bak/ |
|||
|
|||
# Spyder project settings |
|||
.spyderproject |
|||
.spyproject |
|||
|
|||
# Rope project settings |
|||
.ropeproject |
|||
|
|||
# mkdocs documentation |
|||
/site |
|||
|
|||
# mypy |
|||
.mypy_cache/ |
|||
.dmypy.json |
|||
dmypy.json |
|||
|
|||
# Pyre type checker |
|||
.pyre/ |
|||
|
|||
# pytype static type analyzer |
|||
.pytype/ |
|||
|
|||
# Cython debug symbols |
|||
cython_debug/ |
|||
|
@ -0,0 +1,22 @@ |
|||
FROM python:3.10 |
|||
|
|||
# Set the working directory in the container |
|||
WORKDIR /app |
|||
|
|||
# Install poppler-utils for pdf2image |
|||
RUN apt-get update && apt-get install -y poppler-utils \ |
|||
&& apt-get -y install tesseract-ocr |
|||
|
|||
|
|||
# Copy the current directory contents into the container at /app |
|||
COPY . /app |
|||
|
|||
# Install any needed packages specified in requirements.txt |
|||
RUN pip install -r requirements.txt |
|||
|
|||
# Make port 5000 available to the world outside this container |
|||
EXPOSE 5000 |
|||
|
|||
# Run app.py when the container launches |
|||
CMD ["python", "app.py"] |
|||
|
@ -0,0 +1,39 @@ |
|||
from flask import Flask, request, send_from_directory, abort |
|||
import os |
|||
from pdf_to_word import pdf_to_word |
|||
import logging |
|||
|
|||
# Configure logging |
|||
logging.basicConfig(level=logging.DEBUG, filename='/app/logs/app.log', filemode='w', |
|||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') |
|||
|
|||
app = Flask(__name__) |
|||
UPLOAD_FOLDER = '/app/uploads' |
|||
OUTPUT_FOLDER = '/app/outputs' |
|||
|
|||
if not os.path.exists(UPLOAD_FOLDER): |
|||
os.makedirs(UPLOAD_FOLDER) |
|||
if not os.path.exists(OUTPUT_FOLDER): |
|||
os.makedirs(OUTPUT_FOLDER) |
|||
|
|||
@app.route('/upload-pdf', methods=['POST']) |
|||
def upload_pdf(): |
|||
file = request.files['file'] |
|||
if file and file.filename.endswith('.pdf'): |
|||
pdf_path = os.path.join(UPLOAD_FOLDER, file.filename) |
|||
file.save(pdf_path) |
|||
logging.info(f'File uploaded and saved to {pdf_path}') |
|||
output_path = pdf_to_word(pdf_path, OUTPUT_FOLDER, lang='fas+eng') |
|||
if output_path: |
|||
logging.info(f'Sending file {output_path}') |
|||
return send_from_directory(OUTPUT_FOLDER, os.path.basename(output_path), as_attachment=True) |
|||
else: |
|||
logging.error('Conversion failed.') |
|||
abort(500, 'Conversion failed.') |
|||
else: |
|||
logging.warning('Invalid file type or no file uploaded.') |
|||
abort(400, 'Invalid file type or no file uploaded.') |
|||
|
|||
if __name__ == '__main__': |
|||
app.run(debug=True, host='0.0.0.0', port=5000) |
|||
|
@ -0,0 +1,16 @@ |
|||
version: '3.8' |
|||
|
|||
services: |
|||
pdf-converter: |
|||
build: . |
|||
ports: |
|||
- "4000:5000" |
|||
volumes: |
|||
- ./uploads:/app/uploads |
|||
- ./outputs:/app/outputs |
|||
- ./logs:/app/logs |
|||
|
|||
environment: |
|||
- FLASK_ENV=development |
|||
- FLASK_APP=app.py |
|||
- TESSDATA_PREFIX=/app/tessdata |
@ -0,0 +1,318 @@ |
|||
werkzeug - WARNING - * Debugger is active! |
|||
werkzeug - INFO - * Debugger PIN: 753-842-989 |
|||
root - INFO - File uploaded and saved to /app/uploads/np11.pdf |
|||
root - INFO - Starting conversion for /app/uploads/np11.pdf |
|||
root - INFO - Converted PDF to images, number of pages: 4 |
|||
root - DEBUG - Extracted text from page 1 |
|||
root - INFO - |
|||
------Page 1------ |
|||
Van Aarsen |
|||
|
|||
ماشینهای پلت مدل C و CU |
|||
|
|||
نسل جدید ماشینهای پلت |
|||
علاوه بر ماشین پلت LC Joe که امتحان خود را در صنعت خوراک پس داده است. شرکت 5B آرسن بهانازگی مدل جدیدی از ماشینهای پلت را با |
|||
عنوان CU معرفی نموده است:ماشین مدل CU که دارای آخرین تکنولوزی :در die پلتسازی میباشد:در دو نوع aly وادینامیکی ارائه: شده است: |
|||
|
|||
نوع دینامیکی ماشین مدل لاح مجهز به تنظیمگر غلتک موتوری و کنترل کنندهی فعال لغزش غلتک میباشد. طراحی مستحکم تنظیم گر غلتک |
|||
موتوری به اپراتور این امکان را میدهد. تا حتی در زمان کار دستگاه به سادگی فاصلهی دلخواه بین غلتک و دای را انتخاب نماید. این سیستم |
|||
همراه با نرم افزار هوشمند wot مزایای زیادی را در فرایند ساخت و برنامههای تعمیر و نگهداری ارائه میکند. |
|||
|
|||
یکی از این مزایاء افزایش طول عمر دای و غلتک به میزان ۳۰۹۵ است. با ایجاد ارتباط بین پیچ دوزینگ و (SHE زمانی که ماشین پلت تولید نداردء |
|||
غلتک به عقب کشیده میشود. این سیستم» مجهز به یک گزینهی حالت تمیزکاری دای میباشد که اپراتور را قادر میسازد پس از ساخت هر @ |
|||
دای را تمیز نماید. این امر wile از کلوخه شدن مواد در سطح داخلی دای شده و در نتیجه پس از هر توقف, دستگاه به سرعت به فرایند تولید باز |
|||
میگردد. |
|||
|
|||
کنترل کنندهی فعال لغزش غلتک. سیستمی هوشمند میباشد که به منظور بهینهسازی سرعت تولید ماشین پلت طراحی شده است. این سیستم |
|||
با شناسایی حرکت لغزشی غلتک به صورت خودکار فعال شده و مانع از خاموشی دستگاه به علت بروز لغزش در غلتک می گردد. |
|||
|
|||
۹ ارس ژی_وارصوفضی |
|||
W |
|||
|
|||
هدف ما سلامتی |
|||
نماینده انحصاری در ابران |
|||
www.ParsJivarSoufi.com |
|||
PJS@ParsSoufi.com |
|||
|
|||
تلفن: ۰ ۸۸۰۶۴۴۲۶-۸ |
|||
|
|||
فکس : ۵ |
|||
|
|||
------*------ |
|||
|
|||
root - DEBUG - Extracted text from page 2 |
|||
root - INFO - |
|||
------Page 2------ |
|||
کْوْع» |
|||
|
|||
VanAarsen |
|||
|
|||
پلتهای خوراک دام پس از طی پروسهی آسیاب. مخلوط کردن و فرآوری پخت مواد adsl (کاندیشنینگ»» با قطر و |
|||
سختیهای مختلف تولید میشوند. ماشینهای پلت مدل ۴ و لاح فن آرسن قابلیت تولید خوراک تا ظرفیت ۶۰ تن |
|||
بر ساعت را با توجه به پارامترهای مختلف دارا میباشد. هزینههای عملیاتی این دستگاهها که Joli هزینههای دای |
|||
غلتک و قطعات در معرض سایش بوده بسیار اندک میباشد و میتواند تا مقدار یک یورو به ازای هر تن کاهش ab |
|||
مدلها |
|||
|
|||
as Lon is . nes lock cd .C600 (£500 |
|||
CU900 «ass CU750 پایه و CU900XL 4 امکان ساخت pled بخشهای در تماس با محصول از جنس استیل ضد زنگ |
|||
|
|||
ویزگی ها ومزایا ried استیل - (5S = اختباری |
|||
|
|||
4 سیستم انتقال قدرت دو مرحلهای که امکان به کارگیری سوعتهای مختلف را با |
|||
|
|||
یک موتور فراهم میکند |
|||
4 تنظیم هیدرولیک غلتک (اختیاری) برای انعطاف پذیری بیشتر و تنظیمات دقیق |
|||
|
|||
فرمول مبتنی بر دستورالعمل |
|||
|
|||
ry 4 با کیفیت خوب پات |
|||
|
|||
4 سطح موثر بزرگ دای برای به حداکثر رساندن ظرفیت تولید |
|||
۸ و ی ریک سگم یرای پا و رساندن ظرفیت تولید |
|||
|
|||
ظرفیت gon ۹/۳ GE guration oo بر oi wal د کات هام امه us ۴ ا ی |
|||
4 دارای قاب - بلیت کنتر لف رکانس موتور برای تن تنظیم سرعت براساس دستورالعمل محصول ig b ۹ > 2 ۱ (حداکثر Eo pai al a pl |
|||
ه. وجود مسیر فرعی در ورودی به منظور جلوگیری از اعمال بار اضافی به دررنگاه 4 امگان تنظیم میزان چربی SL اختیاری : |
|||
۵5 فرع در موارد ترلید ام ie don ۶.۷ ۱ ۱.7 4 بهبود خواص فیزیکی (سختی و پایداری) و شیمیایی (ژلاتینه کردن» حذف میکروبهای |
|||
» وجود مسیر فرعی در موارد تولید مش 63512( شده به منظور بازگردانی آن 1 ۹ ۹ i 1 ”= |
|||
به چرخهی Ji ال ok = بیماری زا 9 پلتهاء با ایجاد تناسب بین دستورالعمل خوراک 9 ساختار دای |
|||
۱ امکان پذیر میباشد. |
|||
|
|||
ed 4 بالای ماس و وجوه یگ نمایش ۲ اینچی در 4 امکان اضافه نمودن سیستم پاشش مایعات (cascade liquid coater) روی پلتهای |
|||
|
|||
کنترل اپراتور (صفحه نمایش ۹٩ اینچیسه اختیاری) |
|||
4 امکان مشاهدهی این صفحه بر روی یک کامپیوتر در اتاق اپراتور وایا Es) و |
|||
4 امکان مشاهدهی تغییرات پارامترهای ختلف مانان پار دستگاه» J cles 4 امکان ایزوله oF و L حرارتدهی درب دستگاه برای تولید بهداشتی سه اختیاری |
|||
ظرفیت دستگاه و ثبت آنها در طول زمان 4 سیستم هوای داغ بهداشتی برای جلوگیری از چگالش و خشک کردن سریع محصولات |
|||
پس از تولید سسه اختیاری |
|||
|
|||
داغ سه اختیاری |
|||
|
|||
4 رو اسان وی ترا هی مان انیت BE |
|||
|
|||
4 . کاهش زمان i تسیر وتگهداری بهدلبل ساختا, مستحکم دستگاه 4 طراحی ارگونومیک و کم جاگیر همراه با یک بالابر یکپارچه. جهت تعویض دای |
|||
4 روانکاری خودکار یاتاقانهای غلتشی و بیرینگهای شفت اصلی « بالابر موتوری برای دای و غلتکها (برای مدلهای CU750 «£750 £600 (C500 |
|||
» سیستم تعویض و جایگذاری سریع دای (زمان تقریبی تعویض دای» ۲۵ دقیقه mn به صورت اختیاری و برای مدلهای C900XL CU9OOXL ۴1900 C900 |
|||
میباشد) به صورت استاندارد) |
|||
4 تکیهگاه مخروطی دای به همراه حلقهی نگهدارندهی مقاوم به سایش 4 دسترسی آسان و ایمن از طریق درب بزرگ دستگاه |
|||
طراحی و عمر بالا 4 وجود جعبه ابزار برای تعویض lol دای و غلتکها |
|||
4 نگهدارندهی دای به همراه تکیهگاه حلقهای مقاوم به سایش 4 وجود دستگاه چرخش wal بر روی نگهدارندهی ls برای تعویض و جایگذاری |
|||
4 وجود آهنربا در قیف ورودی برای حفاظت از دستگاه اسان و صحیح دای سم اختیاری |
|||
4 وجود یک پین که در حالت بیشبار» شکسته شده و با قطع جریان مانع از 4 وجود عایق صدا برای دستگاه |
|||
بروز آسیب به اجزای دستگاه go شود. 4 طراحی و ساخت دستگاه منطبق بر استانداردهای ایمنی CE و ATEX |
|||
|
|||
طراحی مستحکم و استفاده از مواد باکیفیت در ساخت |
|||
4 وجود بیرینگهای مستحکم همراه با شفت فورج شده |
|||
of درب ساخته شده از جنس استیل ضد زنگ (استنلس استیل- 55) به منظور |
|||
رد lam sl خوردگی و به حداقل رساندن آلودگی |
|||
|
|||
4 اطلاعات ارائهشده در این سند.ء هیچگونه حقی را برای خربدار آبچاد نمیکند. توضیحات ۳۳ |
|||
|
|||
|
|||
------*------ |
|||
|
|||
root - DEBUG - Extracted text from page 3 |
|||
root - INFO - |
|||
------Page 3------ |
|||
VanAarsen |
|||
|
|||
3ینامیکی علاوه بر ویژگیهای دستگاههای wl CU 3 C Joe دارای مزایای Jd میباشد: |
|||
|
|||
تنظیم گر غلتک موتوری: این تجهیز امکان کاربری آسان دستگاه را به همراه سایش کمتر در دای و غلتکها فراهم کرده |
|||
و شرایط فرآوری را برای هر دستورالعمل,ء متناسب با نوع محصول بهینه میسازد. |
|||
|
|||
e کنترل کنندهی فعال لغزش غلتک: این سیستم» فرآیندی بدون دردسر را در ساخت پلت فراهم آورده و امکان بهینه سازی |
|||
فرآیند تولید برای تمامی دستورالعملها را مهیا مینماید. |
|||
|
|||
عملکرد بهینهی مدل CU دینامیکی: حداقل نیروی انسانی و کمترین هزینههای عملیاتی |
|||
|
|||
مدلها |
|||
CU750 دینامیکی. 900 دینامیکی و )(900ا دینامیکی |
|||
ویژگیها و مزایا ربری آسان و ایمن ۱ |
|||
ظرفیت بالا 4 افزایش cols, اپراتور و کاربری آسان |
|||
|
|||
of اسیستم فعال تشخیص لغش غلتکء dy صورت خودکار pile از بروز انسداد @ اعلام هشدار در زمان نیاز به صفر کردن فاصلهی بین غلتکها |
|||
|
|||
در دای و کاهش زمان اتلافی ناشی از وقغفه در فرآیند میشود. @ اعلام هشدار در زمان نیاز به تنظیم یکی از غلتکها |
|||
قابلیت شناسایی بروز لغش فر هریک از غلتکها: @ Ll هدفمند مشکلات دستگاه در زمان بروز خطا. دلایل بروز خطا به |
|||
@ پس: از شناسایی لغزش, غلنکها به سمت یکدیگر حرکت کرده» به. تنظیم سرعت مشخص شده و روشی برای حل ارائه میشود. |
|||
اولیه برگشته و به:اپراتور اطلاع داده می شود عدم ن نیاز به باز ز کردن دستگاه برای رفع مشکلات Of |
|||
@ در حالت بروز مداوم لغزش» ورود محصول متوقف و به اپراتور هشدار داده میشود. نش |
|||
4 این سیستم مجهزبه یک گزینهی Cl تمیزکاری دای میباشد که اپراتور 4 سیستم تنظیم غلتک مکانیکی از قطعات مکانیکی مستحکمی تشکیل شده |
|||
را قادر میسازدپس از ساخت هر بچء دای را تمیز تماید. این امر مانع از کلوخه است و امکان بروز آسیب را به حداقل میرساند. |
|||
شدن مواد در سطح داخلی دای شده و در نتیجه پس از هر (By دستگاه به تمام اجزای سیستم تنظیم غلتک. دارای پوشش آسان تمیزشو بوده که این |
|||
سرعت به فرآیند تولید باز می گردد. امر خطر انتقال آلودگی بین بچهای مختلف و نیز زمان تمیزکاری را کاهش |
|||
|
|||
4 تنظیم دقیق غلتکهاء برای رسیدن به بهترین فاصلهی ممکن بین آنها برای |
|||
هر دستورالعمل و تنظیمات بهینه به منظور دستیابی به کیفیت مطلوب پلت |
|||
|
|||
4 ۳ فعال لغزش غلتک این امکان را به اپراتور میدهد تا به صورت |
|||
بی بهثرین فاصلهی غلنکها و میزان افزودن بخار به خوراک را بهمنظور |
|||
|
|||
دی SS خوراک و بازده تولید,به :دست آورد. ایراتورها: می توانتد. با |
|||
|
|||
اطمینان از عملکرد این سیستم» تاثیر سایر عوامل را در بهینهسازی تولید |
|||
بررسی نمایند. |
|||
|
|||
تعویض سریع دای به دلیل وجود سیستم تنظیم خودکار غلتک در زمان تعمیر |
|||
« افزایش طول A و غلتکها به میزان ۳۰۹۵ به Jodo عدم تماس مستقیم |
|||
فلز با فلز در زمان راهاندازی دستگاه |
|||
کاهش زمان تمیزکاری به دلیل وجود پوشش آسان تمیز شو در تمامی قطعات |
|||
تنظیم غلتک 3 VE WinVNC |
|||
|
|||
Van Aarsen EH 5 |
|||
7۲ Ee ng ng [reg Venn 7 |
|||
|
|||
ROLL ADJUSTMENT: |
|||
|
|||
Go to zero [T] |
|||
Go to maximum gap [T] |
|||
Start zeroing [T] |
|||
Disable high speed [T] |
|||
Automatic slip prevention |
|||
Start cleaning mode 11 |
|||
|
|||
A 3 |
|||
|
|||
[4] nm] |
|||
Ea mm |
|||
|
|||
لا لا لا لا OR |
|||
|
|||
4 اطلاعات ارائهشده در این aie هیچگونه حقی را برای خربدار dl! نمیکند. توضیحات و تصاو |
|||
|
|||
|
|||
------*------ |
|||
|
|||
root - DEBUG - Extracted text from page 4 |
|||
root - INFO - |
|||
------Page 4------ |
|||
غلتکها تعداد |
|||
قطر میلیمتر |
|||
موتور اصلی |
|||
50Hz-1500rpm کیلووات |
|||
60Hz-1800rpm کیلووات |
|||
|
|||
وزن (Seals Slab کیلوگرم |
|||
|
|||
۱ |
|||
۳ ~~ |
|||
|
|||
مدل |
|||
|
|||
C500 |
|||
C600 |
|||
CU750 - C750 |
|||
CU900 - C900 |
|||
|
|||
C900XL — CU900XL |
|||
|
|||
مدل |
|||
|
|||
C500 |
|||
|
|||
C600 |
|||
|
|||
CU750 - C750 |
|||
CU900 - C900 |
|||
C900XL — CU900XL |
|||
|
|||
C500 |
|||
0 |
|||
۱۹۰ |
|||
|
|||
۳۹۸۵ |
|||
|
|||
۴/۷-۶/ ۰-۷ |
|||
۵/۶۷/۲۰ |
|||
|
|||
3/7 |
|||
۸۶-۱۰۳۶ |
|||
۴۶۰۰۳۰ |
|||
|
|||
Y |
|||
۳۳۰ |
|||
|
|||
ابعاد بر حسب میلیمتر |
|||
B A |
|||
VA. ۱۷۳۷۴ |
|||
AYO ۱۵۲ |
|||
۳۵۰ ۳۰۵ |
|||
۵۰ ۲۴۵۷ |
|||
۲۱۳/۰ |
|||
ابعاد بر حسب میلیمتر |
|||
K ۳ |
|||
yay ۹۵ |
|||
Yo ۱۸۷ |
|||
Yor ۱۹۲ |
|||
|
|||
۳۳۵ |
|||
|
|||
۰ |
|||
|
|||
۳۳ |
|||
|
|||
۴/۹۶/۲۴ |
|||
۵/۹۵ |
|||
|
|||
۲ |
|||
|
|||
۳۸۵ |
|||
|
|||
۱۶۰ |
|||
|
|||
۱۱۰-۱۳۳۲- |
|||
|
|||
۱۳۶۵۳۲ |
|||
۵۶۰ |
|||
|
|||
که |
|||
|
|||
VanAarsen |
|||
|
|||
CU900XL CuU900 CU750 |
|||
qe. qe. ۷۵۰ |
|||
۳۳۵ ۱۷۵-۲۲۵-۵ ۳۵۰ |
|||
۹0 ۴۹۵۰-۶۳۶۰۵ OAR |
|||
۷/۰-/۴-۴ ۴/۹۷ -۵/۳-۶/۷-۷/۰-0/ ۳۴-۹ /۴ ۰۰۰ ۲/عم/۵/۱-۵ ۷ |
|||
۶/۴-۷/۱-۸/۰-۵ ۶/۴-۷/۱-۸/۰-۵ ۳/۴ |
|||
۲ ۲ ۲ |
|||
۴۳۵ ۴۳۵ ۳۶۰ |
|||
۳۱۵-۳۵۵-۰ ۲۰۰۰-۲۵۰-۳۱۵۵ ۱۳۲-۱۶۰۲۰۰۵۰ |
|||
۲۸۵-۳۶۰ -۵ ۳۲۳۸-۲۳۸۵۳۶۰ ۱۵۲-۱۸۴۰ |
|||
۱۱۳۵۰ -۰ ۱۳۵ ۷۶۴۵-۰۰ |
|||
|
|||
1 |
|||
اک 1 LC |
|||
I ۹ |
|||
) | |
|||
J I H G ۳ |
|||
۱۳ ۱۳۰۰ ۱۰۶۰ ۱۴۰ ۱۳۰ |
|||
۱۳۵ ۱۳۰۰ ۱۱۶۰ ۱۴۰ Vo. |
|||
N52. ۱۵۰ YY. ۰ ۱۳۶۵۰ |
|||
YAY. ۱۷۰۰ ۱۳۸۰ ۳ Vero |
|||
VAY. ۱۷۰۰ YEA. ۳۳۰ م۳۰ |
|||
|
|||
T S R Q P |
|||
BY. ۱۹۶۶ ۱ ۵۵ YY. ۶ |
|||
3 Yeo Ye ۶ |
|||
نما | Yee Yr. ۶ |
|||
|
|||
ارس ژی_وارصوفضی |
|||
هدف ما سلامتی |
|||
نماینده انحصاری در ابران |
|||
www.ParsJivarSoufi.com |
|||
PJS@ParsSoufi.com |
|||
|
|||
تلفن : |
|||
فکس : |
|||
|
|||
۸۸۰۶۴۴۲۶-۸ |
|||
۵ |
|||
|
|||
|
|||
------*------ |
|||
|
|||
root - INFO - Document saved to /app/outputs/np11.docx |
|||
root - INFO - Sending file /app/outputs/np11.docx |
|||
werkzeug - INFO - 172.29.0.1 - - [14/Apr/2024 17:28:51] "POST /upload-pdf HTTP/1.1" 200 - |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,46 @@ |
|||
import logging |
|||
from pdf2image import convert_from_path |
|||
import pytesseract |
|||
from PIL import Image |
|||
import tempfile |
|||
from docx import Document |
|||
from docx.enum.text import WD_ALIGN_PARAGRAPH |
|||
import os |
|||
|
|||
# Configure logging |
|||
logging.basicConfig(level=logging.DEBUG, filename='/app/logs/pdf_to_word.log', filemode='w', |
|||
format='%(name)s - %(levelname)s - %(message)s') |
|||
|
|||
def pdf_to_word(pdf_path, output_dir, lang='eng+fas'): |
|||
pdf_name = os.path.basename(pdf_path).split('.')[0] |
|||
output_path = os.path.join(output_dir, f'{pdf_name}.docx') |
|||
logging.info(f'Starting conversion for {pdf_path}') |
|||
|
|||
try: |
|||
pages = convert_from_path(pdf_path, 300) |
|||
logging.info(f'Converted PDF to images, number of pages: {len(pages)}') |
|||
|
|||
document = Document() |
|||
document.add_heading('Document Title', 0) |
|||
|
|||
for i, page in enumerate(pages): |
|||
with tempfile.NamedTemporaryFile(delete=False, suffix='.jpg') as temp_image: |
|||
page.save(temp_image.name, 'JPEG') |
|||
text = pytesseract.image_to_string(Image.open(temp_image.name), lang=lang, config='--psm 6') |
|||
logging.debug(f'Extracted text from page {i+1}') |
|||
|
|||
heading = document.add_heading(f'Page {i+1}', level=1) |
|||
heading.alignment = WD_ALIGN_PARAGRAPH.RIGHT |
|||
paragraph = document.add_paragraph(text) |
|||
paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT |
|||
|
|||
logging.info("\n------"+f'Page {i+1}'+"------\n"+text+"\n------*------\n") |
|||
os.unlink(temp_image.name) |
|||
|
|||
document.save(output_path) |
|||
logging.info(f'Document saved to {output_path}') |
|||
return output_path |
|||
except Exception as e: |
|||
logging.error(f'An error occurred: {e}', exc_info=True) |
|||
return None |
|||
|
@ -0,0 +1,6 @@ |
|||
Flask |
|||
pdf2image |
|||
pytesseract |
|||
Pillow |
|||
python-docx |
|||
tqdm |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Write
Preview
Loading…
Cancel
Save
Reference in new issue