一行代碼從PDF提取Excel文件


最近幾天,paddleOCR開發了新的功能,通過將圖片中的表格提取出來,效果還不錯,今天,作者按照步驟測試了一波。

 

首先,講下這個工具是干什么用的:它的功能主要是針對一張完整的PDF圖片,可以對文檔圖片中的文本、表格、圖片、標題與列表區域進行分類。同時還可以利用表格識別技術完整地提取表格結構信息,使得表格圖片變為可編輯的Excel文件。如下圖所示可以進行版面分析+表格識別。

 

 

核心技術在於兩個:一個是PP-Structure的版面分析技術,另一個是PaddleDetection開源的高效檢測算法PP-YOLO v2。

PP-Structure Pipeline介紹:

 

下面作者按照官網的說明進行安裝(https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.2/ppstructure/README_ch.md):

#step1: 首先需要安裝paddle
# GPU安裝
python -m pip install paddlepaddle-gpu==2.1.1 -i https://mirror.baidu.com/pypi/simple

# CPU安裝(作者在這里使用CPU安裝)
 python -m pip install paddlepaddle==2.1.1 -i https://mirror.baidu.com/pypi/simple

#step2:安裝 Layout-Parser
pip  install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl

#step3:安裝PaddleOCR(包含PP-OCR和PP-Structure)
pip install "paddleocr>=2.2"

這樣就算安裝好了,但是途中會有一些報錯信息,一個是 "ImportError: DLL load failed: 找不到指定的模塊。" ,在查閱了相關的資料之后,發現重新安裝也沒有用,作者是通過安裝舊版本的軟件,就解決了這個問題。另一個報錯,是cv2.imread讀取圖像結果為none,這個錯誤是由於你的路徑中有中文字體,全部修改為英文的即可

接下來就是運行主要的程序代碼,

 1 import os
 2 import cv2
 3 from paddleocr import PPStructure,draw_structure_result,save_structure_res
 4 
 5 table_engine = PPStructure(show_log=True)
 6 
 7 #你的文件結果目錄
 8 save_folder = 'C:/Users/hp/Desktop/pdf_ocr/output/table'
 9 
10 #輸入的圖片
11 img_path = 'C:/Users/hp/Desktop/pdf_ocr/table/5.png'
12 img = cv2.imread(img_path)
13 
14 result = table_engine(img)
15 save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])
16 
17 for line in result:
18     line.pop('img')
19     print(line)
20 
21 from PIL import Image
22 
23 #字體路徑,可以從paddleOCR的github上面下載
24 font_path = 'C:/Users/hp/Desktop/pdf_ocr/fonts/simfang.ttf' 
25 image = Image.open(img_path).convert('RGB') 26 im_show = draw_structure_result(image, result,font_path=font_path) 27 im_show = Image.fromarray(im_show) 28 im_show.save('result.jpg')

運行完成后,每張圖片會在output字段指定的目錄下有一個同名目錄,圖片里的每個表格會存儲為一個excel,圖片區域會被裁剪之后保存下來,excel文件和圖片名名為表格在圖片里的坐標。

 這樣,就可以看到識別出來的excel表格了。

 

 

 

參考資料:

1、https://mp.weixin.qq.com/s?__biz=MzUzODkxNzQzMw==&mid=2247491570&idx=1&sn=09eabf5ac6679dd785a316690869fd0d&chksm=fad130a4cda6b9b21be478a07f6a3c5ad4e40baf689317767346e61df611a5e8a878929ff209&mpshare=1&scene=1&srcid=0810NrT1vbTrqxIvWoU9AnBj&sharer_sharetime=1628553672500&sharer_shareid=546bd079429f4880a353b991a015fc00&key=65026dce4f4248b55f4903e0445572eb42dbc3a5832201e1d7e729561e5077b72e2a874681641c9743f5b5b99cd5eb608fb71514d56970623a0ac1922a19d505fd46d7f45b0971d9d8e46315178b4ae88f0eb8067c1a1b4053aa027d64b5d0bee4a68ebce3fd0d2473264f8fd5fd1cd76c74763a0070b499db907e7ad0ac766d&ascene=1&uin=NjQ3MTEwMDA1&devicetype=Windows+10+x64&version=6209007b&lang=zh_CN&exportkey=AWZ05MZsgkPJNBjok6heBaI%3D&pass_ticket=UwQ2CEB3lWMMEaQsVFjIb43GL8ytB91uf64qzznTito5hFbvyA3WtFS%2Bnk3KQZju&wx_header=0

2、https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.2/ppstructure/README_ch.md

3、https://blog.csdn.net/blueheart20/article/details/80985132

4、https://blog.csdn.net/weixin_39866966/article/details/111209027


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM