198 lines
50 KiB
Plaintext
Executable File
198 lines
50 KiB
Plaintext
Executable File
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import fitz\n",
|
|
"from io import BytesIO"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"pdf_path = \"/mnt/ssd1T/hoanglv/Projects/KIE/DATA/SDSAP_Invoice/raw/batch_1/PDF/eReceipt/(Sol tech Grp)_202303_Receipt_Transfort #1.pdf\"\n",
|
|
"with open(pdf_path, 'rb') as f:\n",
|
|
" pdf_bytes = f.read()\n",
|
|
"doc = fitz.open(stream=pdf_bytes, filetype='pdf')\n",
|
|
"print(doc.page_count)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"True"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"isinstance(pdf_bytes, bytes)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np \n",
|
|
"import os \n",
|
|
"\n",
|
|
"def pdf_to_image(pdf, dpi=300, is_get_first_page=False, max_page=1000):\n",
|
|
" \"\"\"_summary_\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" pdf (_type_): _description_\n",
|
|
" dpi (int, optional): _description_. Defaults to 300.\n",
|
|
" is_get_first_page (bool, optional): _description_. Defaults to False.\n",
|
|
" max_page (int, optional): _description_. Defaults to 1000.\n",
|
|
"\n",
|
|
" Raises:\n",
|
|
" NotImplementedError: _description_\n",
|
|
"\n",
|
|
" Returns:\n",
|
|
" _type_: _description_\n",
|
|
" \"\"\"\n",
|
|
" if isinstance(pdf, str):\n",
|
|
" if not os.path.exists(pdf):\n",
|
|
" print(f\"Not found pdf path at {pdf}\")\n",
|
|
" return []\n",
|
|
" doc = fitz.open(pdf) # open document\n",
|
|
" elif isinstance(pdf, bytes):\n",
|
|
" doc = fitz.open(stream=pdf, filetype='pdf')\n",
|
|
" else:\n",
|
|
" raise NotImplementedError(f\"Not yet implement for {type(pdf)} type !!!\")\n",
|
|
" \n",
|
|
" zoom = dpi // 72\n",
|
|
" magnify = fitz.Matrix(zoom, zoom) \n",
|
|
" imgs = []\n",
|
|
" for idx, page in enumerate(doc):\n",
|
|
" pix = page.get_pixmap(matrix=magnify) # render page to an image\n",
|
|
" \n",
|
|
" im = np.frombuffer(pix.samples, dtype=np.uint8).reshape(pix.h, pix.w, pix.n)\n",
|
|
" im = np.ascontiguousarray(im[..., [2, 1, 0]]) # rgb to bgr\n",
|
|
" imgs.append(im)\n",
|
|
" if is_get_first_page or idx >= max_page:\n",
|
|
" break\n",
|
|
" return imgs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "FileNotFoundError",
|
|
"evalue": "no such file: '/mnt/ssd1T/hoanglv/Projects/KIE/DATA/SDSAP_Invoice/raw/batch_1/PDF/eReceipt/(Sol tech Grp)_202303_Rec eipt_Transfort #1.pdf'",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
|
|
"Cell \u001b[0;32mIn[18], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m imgs \u001b[39m=\u001b[39m pdf_to_image(pdf\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39m/mnt/ssd1T/hoanglv/Projects/KIE/DATA/SDSAP_Invoice/raw/batch_1/PDF/eReceipt/(Sol tech Grp)_202303_Rec eipt_Transfort #1.pdf\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n\u001b[1;32m 2\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39mlen\u001b[39m(imgs))\n",
|
|
"Cell \u001b[0;32mIn[13], line 5\u001b[0m, in \u001b[0;36mpdf_to_image\u001b[0;34m(pdf, dpi, is_get_first_page)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mpdf_to_image\u001b[39m(pdf, dpi\u001b[39m=\u001b[39m\u001b[39m300\u001b[39m, is_get_first_page\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m):\n\u001b[1;32m 4\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(pdf, \u001b[39mstr\u001b[39m):\n\u001b[0;32m----> 5\u001b[0m doc \u001b[39m=\u001b[39m fitz\u001b[39m.\u001b[39;49mopen(pdf) \u001b[39m# open document\u001b[39;00m\n\u001b[1;32m 6\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(pdf, \u001b[39mbytes\u001b[39m):\n\u001b[1;32m 7\u001b[0m doc \u001b[39m=\u001b[39m fitz\u001b[39m.\u001b[39mopen(stream\u001b[39m=\u001b[39mpdf, filetype\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mpdf\u001b[39m\u001b[39m'\u001b[39m)\n",
|
|
"File \u001b[0;32m~/miniconda3/envs/py38_hoanglv/lib/python3.8/site-packages/fitz/fitz.py:3867\u001b[0m, in \u001b[0;36mDocument.__init__\u001b[0;34m(self, filename, stream, filetype, rect, width, height, fontsize)\u001b[0m\n\u001b[1;32m 3865\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m os\u001b[39m.\u001b[39mpath\u001b[39m.\u001b[39mexists(filename):\n\u001b[1;32m 3866\u001b[0m msg \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mno such file: \u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00mfilename\u001b[39m}\u001b[39;00m\u001b[39m'\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m-> 3867\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mFileNotFoundError\u001b[39;00m(msg)\n\u001b[1;32m 3868\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39mnot\u001b[39;00m os\u001b[39m.\u001b[39mpath\u001b[39m.\u001b[39misfile(filename):\n\u001b[1;32m 3869\u001b[0m msg \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00mfilename\u001b[39m}\u001b[39;00m\u001b[39m'\u001b[39m\u001b[39m is no file\u001b[39m\u001b[39m\"\u001b[39m\n",
|
|
"\u001b[0;31mFileNotFoundError\u001b[0m: no such file: '/mnt/ssd1T/hoanglv/Projects/KIE/DATA/SDSAP_Invoice/raw/batch_1/PDF/eReceipt/(Sol tech Grp)_202303_Rec eipt_Transfort #1.pdf'"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"imgs = pdf_to_image(pdf=\"/mnt/ssd1T/hoanglv/Projects/KIE/DATA/SDSAP_Invoice/raw/batch_1/PDF/eReceipt/(Sol tech Grp)_202303_Rec eipt_Transfort #1.pdf\")\n",
|
|
"print(len(imgs))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt \n",
|
|
"plt.imshow(imgs[0])\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# import module\n",
|
|
"from pdf2image import convert_from_path\n",
|
|
" \n",
|
|
" \n",
|
|
"# Store Pdf with convert_from_path function\n",
|
|
"images = convert_from_path('/mnt/hdd2T/AICR/Projects/2023/Invoices_SL_HCM/EAS03581488.pdf', dpi=300)\n",
|
|
" \n",
|
|
"for i in range(len(images)):\n",
|
|
" \n",
|
|
" # Save pages as images in the pdf\n",
|
|
" images[i].save('page'+ str(i) +'.jpg', 'JPEG')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "py38_hoanglv",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.8.16"
|
|
},
|
|
"orig_nbformat": 4
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|