日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项

發布時間:2024/7/5 python 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、python庫camelot安裝及使用中的一些注意事項

1)camelot方法有兩種解析模式:流解析(stream)、格子解析(lattice),其中格子解析能夠保留表格完整的樣式,對于復雜表格來說要優于流解析模式。同時,camelot方法默認格子解析(lattice),而采用這種解析方式,需要安裝ghostscript。因此,僅通過pip命令安裝的camelot,代碼運行時通常會報錯。需要下載ghostscript.exe并安裝。安裝后,經測試,并不需要在代碼中import ghostscript。

2)camelot輸出格式如果選擇csv格式,可能存在中文亂碼問題,需要用文本編輯器將導出的csv文件編碼改為ansi格式。
如果想直接保存為excel格式,需要xlwt模塊支持,pip安裝xlwt后tables.export(‘文件名.xls’,f = ‘excel’)即可輸出為excel格式。

3)后來在另外一臺電腦上安裝camelot庫時出現了一個奇葩的問題,程序運行報錯。反復檢查才發現原因。首先是在這臺電腦上,我是按照印象輸入pip install camelot,也安裝成功。但代碼運行錯誤。經查閱,正確命令(或者說版本)是pip install camelot-py[cv]。

所以我先uninstall前面安裝的camelot,又重新按照正確的命令安裝camelot-py[cv],但代碼運行時又提示import xlwt有問題,在python庫中檢查了下,xlwt文件是正常的,找了半天沒找到原因。后來單獨卸載xlwt,然后重新pip安裝xlwt,發現xlwt的版本號由0.7變為1.3,然后一切就正常了。估計是之前錯誤安裝了camelot的版本,導致順帶安裝的xlwt版本過低,無法兼容python3.6.5。

4)camelot開始時一切正常,但處理一個pdf文件時突然報錯:pdfminer.psparser.SyntaxError: Invalid dictionary construct: [/‘Type’, /‘Font’, /‘Subtype’, /‘Type0’, /‘BaseFont’, /b"b’", /“ABCDEE+\xcb\xce\xcc\xe5’”, /‘Encoding’, /‘Identity-H’, /‘DescendantFonts’, PDFObjRef:11, /‘ToUnicode’, PDFObjRef:19]

經百度,找到解決方案,修改了pandas和PyPDF2模塊的三處源碼,恢復正常。具體修改內容見python爬蟲處理在線預覽的pdf文檔https://link.csdn.net/?target=https%3A%2F%2Fwww.cnblogs.com%2FEeyhan%2Farchive%2F2019%2F12%2F30%2F12111371.html

二 、 python庫Camelot從pdf抽取表格數據
原文鏈接:https://blog.csdn.net/xc_zhou/article/details/99242995

Camelot: 一個友好的PDF表格數據抽取工具

一個python命令行工具,使任何人都能很輕松的從PDF文件中抽取表格數據。

安裝 Camelot

安裝非常簡單! 在安裝相關的依賴后,可以直接使用pip安裝。

$?pip?install?camelot-py
  • 1

怎樣使用Camelot

使用Camelot從PDF文檔提取數據非常簡單

為什么使用Camelot

  • Camelot允許你通過調整設置項來精確控制數據的提取過程
  • 可以根據空白和精度指標來判斷壞的表格,并丟棄,而不必手動檢查
  • 每一個表格數據是一個panda的dataframe,從而可以很方便的集成到ETL和數據分析工作流中
  • 可以把數據導出為各種不同的格式比如 CSV、JSON、EXCEL、HTML

首先,讓我們看一個簡單的例子:eg.pdf,整個文件只有一頁,這一頁中只有一個表格,如下:

使用以下Python代碼就可以提取該PDF文件中的表格:

import camelot

從PDF文件中提取表格

tables = camelot.read_pdf(‘E://eg.pdf’, pages=‘1’, flavor=‘stream’)

表格信息

print(tables)
print(tables[0])

表格數據

print(tables[0].data)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

輸出結果為:

<TableList n=1> <Table shape=(4, 4)> [['ID', '姓名', '城市', '性別'], ['1', 'Alex', 'Shanghai', 'M'], ['2', 'Bob', 'Beijing', 'F'], ['3', 'Cook', 'New York', 'M']]
  • 1
  • 2
  • 3

分析代碼,camelot.read_pdf()為camelot的從表格中提取數據的函數,輸入的參數為PDF文件的路徑,頁碼(pages)和表格解析方法(有stream和lattice兩個方法)。對于表格解析方法,默認的方法為lattice,而stream方法默認會把整個PDF頁面當做一個表格來解析,如果需要指定解析頁面中的區域,可以使用table_area這個參數。

camelot模塊的便捷之處還在于它提供了將提取后的表格數據直接轉化為pandas,csv,JSON,html的函數,如tables[0].df,tables[0].to_csv()函數等。我們以輸出csv文件為例:

import camelot

從PDF文件中提取表格

tables = camelot.read_pdf(‘E://eg.pdf’, pages=‘1’, flavor=‘stream’)

將表格數據轉化為csv文件

tables[0].to_csv(‘E://eg.csv’)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

得到的csv文件如下:

例2

在例2中,我們將提取PDF頁面中的某一區域的表格的數據。PDF文件的頁面(部分)如下:

為了提取整個頁面中唯一的表格,我們需要定位表格所在的位置。PDF文件的坐標系統與圖片不一樣,它以左下角的頂點為原點,向右為x軸,向上為y軸,可以通過以下Python代碼輸出整個頁面的文字的坐標情況:

import camelot

從PDF中提取表格

tables = camelot.read_pdf(‘G://Statistics-Fundamentals-Succinctly.pdf’, pages=‘53’,
flavor=‘stream’)

繪制PDF文檔的坐標,定位表格所在的位置

tables[0].plot(‘text’)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

輸出結果為:

UserWarning: No tables found on page-53 [stream.py:292]
  • 1

整個代碼沒有找到表格,這是因為stream方法默認將整個PDF頁面當作表格,因此就沒有找到表格。但是繪制的頁面坐標的圖像如下:

仔細對比之前的PDF頁面,我們不難發現,表格對應的區域的左上角坐標為(50,620),右下角的坐標為(500,540)。我們在read_pdf()函數中加入table_area參數,完整的Python代碼如下:

import camelot

識別指定區域中的表格數據

tables = camelot.read_pdf(‘G://Statistics-Fundamentals-Succinctly.pdf’, pages=‘53’,
flavor=‘stream’, table_area=[‘50,620,500,540’])

繪制PDF文檔的坐標,定位表格所在的位置

table_df = tables[0].df

print(type(table_df))
print(table_df.head(n=6))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

輸出的結果為:

<class 'pandas.core.frame.DataFrame'>0 1 2 3 0 Student Pre-test score Post-test score Difference 1 1 70 73 3 2 2 64 65 1 3 3 69 63 -6 4 … … … … 5 34 82 88 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

總結

在具體識別PDF頁面中的表格時,除了指定區域這個參數,還有上下標、單元格合并等參數,詳細地使用方法可參考camelot官方文檔網址:https://camelot-py.readthedocs.io/en/master/

參考:https://www.php.cn/python-tutorials-412223.html
https://mp.weixin.qq.com/s?__biz=MjM5NzU0MzU0Nw==&mid=2651380263&idx=1&sn=514485e8c4fe820834bacbcccfbb4ae9&chksm=bd2411338a539825977b2ab6d6e7a1fd86dfe0c85ba54a50d1472c309f7b1efdc164d1da4f96&mpshare=1&scene=23&srcid=0520POo6Bt0M0FUTbhnwNptJ#rd

總結

以上是生活随笔為你收集整理的python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩特黄一级片 | 一级黄色录相 | 在线免费黄网 | 午夜黄色福利视频 | 欧美精品一区二区不卡 | 午夜电影一区 | 日韩成人精品一区二区 | 国内精品久久久久久久影视简单 | 成人91| 久久黄色av | 在线视频观看免费 | 日本一区二区三区免费看 | 波多野结衣视频在线 | 日本久久免费 | 兄弟兄弟全集免费观看 | 国产免费一区二区 | 国精产品一区二区 | 国内精品人妻无码久久久影院蜜桃 | 视频一区在线免费观看 | 超碰网站在线观看 | 亚洲欧美一区二区精品久久久 | 久久艹中文字幕 | 激情777 | 99热久久这里只有精品 | 四虎av| 日本人妻一区 | 久久噜噜噜精品国产亚洲综合 | 亚洲黄色小说视频 | 亚洲成人基地 | 131mm少妇做爰视频 | 成人乱码一区二区三区av | 91青青操| 北条麻妃二三区 | 啪啪免费视频网站 | 日批免费观看视频 | 被黑人啪到哭的番号922在线 | 亚洲成人自拍网 | 男人天堂a在线 | 18黄暴禁片在线观看 | 色图视频| 在线观看的av网站 | 天天综合国产 | 欧美日韩高清一区 | 国产美女一区二区三区 | 少妇网站在线观看 | 精品一区二区三区免费 | 日本人妻熟妇久久久久久 | 欧美视频自拍偷拍 | 91直接看 | 成人性生交大片免费 | 日本色视 | 三级性视频 | 成人看片 | 免费在线视频观看 | 亚洲av无码久久忘忧草 | 黄色在线观看免费 | 999视频在线播放 | 手机看片欧美 | 九色精品视频 | 国产深夜视频 | 免费国产一区二区三区 | 波多野结衣一区二区三区免费视频 | 久久青青操 | 可以免费看av | 俺去射 | 中文字幕一区二 | www.成年人| 欧美日韩六区 | www日本com | 日本理伦片午夜理伦片 | 成人tv| 波多野结衣一区二 | 91免费在线播放 | 成人视品 | 高清久久久久久 | 黄色片网站免费观看 | 久久成人精品 | 99re在线视频 | 国产精品久久毛片 | 加勒比精品在线 | 亚洲第一页在线观看 | 国产无遮挡一区二区三区毛片日本 | 精品欧美黑人一区二区三区 | 中国a一片一级一片 | 亚洲97在线 | 天海翼一二三区 | 久操热线 | 尤物视频在线观看免费 | 日韩av在线一区二区三区 | 日韩另类视频 | 精品免费看 | 久久精品国产99精品国产亚洲性色 | 久青草资源福利视频 | 在线亚洲精品 | 国产对白羞辱绿帽vk | 日韩精品中文字幕在线 | 亚洲精品网址 | 老局长的粗大高h | 一二三区中文字幕 |