神經網絡提取PDF表格工具來了,支持圖片,還能白嫖谷歌GPU資源

2020-12-20 量子位

賈浩楠 發自 凹非寺量子位 報導 | 公眾號 QbitAI

「表哥表姐」們還在為大量PDF文件中的表格發愁嗎?

百度一下,網上有大量提取PDF表格的工具,但是,它們都只支持文本格式PDF。

但掃描生成的圖片表格怎麼辦?

別著急,一種使用深度神經網絡識別提取表格的開源工具可以幫助你。

兼容圖片、高準確率、還不佔用本地運算資源,如此實用的工具值得你擁有。

測試實例

如果在輸入的PDF文件中檢測的表格,模型會在邊界框(bounding box)標出表格邊框:

然後,表格數據會被轉化為Panda數據框架,方便後續處理:

怎麼樣,是不是很實用?那這個工具如何使用呢?

使用姿勢詳解

神經網絡算法,還不佔用本地運算資源?

對,你沒聽錯,這個工具的所有代碼都可以在谷歌Colab上運行。也就是說你可以利用Colab雲端資源完成訓練和推理,無需本地安裝。

這個工具使用到的深度神經網絡是Keras-RetinaNet,首先要在Colab上安裝Keras-RetinaNet,通過一下一行代碼就可以完成:

git clone https://github.com/fizyr/keras-retinanet

同時需要安裝必要的庫:

pipinstall.pythonsetup.pybuild_ext — inplace

訓練Keras-RetinaNet識別表格

首先要構建或一個訓練使用的資料庫。

這裡要用到Colab工具PDF2Img,將PDF文件轉為JPG格式供算法學習。

然後將轉好的圖片保存在Images文件夾中。接下來需要手動給這些訓練數據打標籤,這裡推薦使用在線標記工具makesense.ai。

將XML注釋文件保存在注釋文件夾中,並創建用於培訓和測試的PDF文件列表,將該列表導入train.txt和test.txt中。

接下來,克隆Github項目https://github.com/ferrygun/PDFTableExtract,並安裝beautifulsoup。

運行以下命令以將PASCALVOC格式轉換為Keras-RetinaNet所需的格式:

pythonbuild_logos.py

運行上述命令後,會得到retinanet_classes.csv,retinanet_test.csv和retinanet_train.csv。

在retinanet_classses.csv中,由於只識別PDF文檔中的表,所以只有到一個class,即class 0。

如果你在打標籤的過程中加入頁眉頁腳等標籤,相應能得到多個class。

完整的文件和文件夾結構的列表:

然後,將retinanet_classes.csv,retinanet_test.csv,retinanet_train.csv,train.txt和test.txt 導入keras-retinanet的根文件夾中:

接下來,運行Colab TrainOCR,可以根據要訓練的JPG文件數量來調整訓練的epoch數量。

訓練完成後,就會得到權重文件output.h5,下載此文件並將其保存到本地主機。後面將使用該文件來運行測試。

這裡需要注意的一點是,在Colab中,已將文件上傳到Git並進行了Git克隆。

運行測試

運行測試前,還需要安裝處理PDF文件必要的庫。

PyPDF2是一個python工具庫,能夠提取文檔信息,裁剪頁面等。

使用以下命令安裝此庫:

pip install PyPDF2

Camelot是專門用於解析PDF頁面表格的python庫。

使用以下命令安裝此庫:

pipinstallcamelot-py[cv]

PDF2IMG是將Python轉換為PIL Image對象的python庫。

使用以下命令安裝此庫:

pip install pdf2imag

在運行預測之前,需要使用從訓練中獲得的權重文件output.h5加載模型,並從retinanet_classes.csv定義標籤class 0。

model_path = 『output.h5’model = models.load_model(model_path, backbone_name=’resnet50』)labels = 『retinanet_classes.csv』LABELS = open(labels).read().strip().split(『\n』)LABELS = {int(L.split(『,』)[1]): L.split(『,』)[0] for L in LABELS}print(LABELS){0: 『tabel』}

接下來運行測試

import numpy as npimport cv2import matplotlib.pyplot as pltimage_path = imgfname#image = cv2.imread(image_path)image = read_image_bgr(image_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)output = image.copy()output = cv2.cvtColor(output, cv2.COLOR_BGR2RGB)print(output.shape) # row (height) x column (width) x color (3)image = preprocess_image(image)(image, scale) = resize_image(image)image = np.expand_dims(image, axis=0)# detect objects in the input image and correct for the image scale(boxes, scores, labels) = model.predict_on_batch(image)boxes /= scaleconfidence = 0.2from google.colab.patches import cv2_imshowimport matplotlib.pyplot as pltlabel_out = []result = ""# loop over the detectionsfor (box, score, label) in zip(boxes[0], scores[0], labels[0]): # filter out weak detections if score < confidence: continue # convert the bounding box coordinates from floats to integers box = box.astype("int") # build the label and draw the label + bounding box on the output # image labeli = label label = "{}: {:.2f}".format(LABELS[label], score) print(label) if LABELS[labeli] not in label_out: label_out.append(LABELS[labeli]) cv2.rectangle(output, (box[0], box[1]), (box[2], box[3]), (255, 0, 0), 12) print(box[0]) print(box[1]) print(box[2]) print(box[3]) #result cv2.putText(output, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 4.5, (255, 1, 1), 12)plt.figure(figsize=(20, 20))plt.imshow(output)plt.show()

如果檢測的表格,模型會在邊界框(bounding box)標出表格邊框:

邊界框坐標(x1,y1,x2,y2),將table_area輸入到Camelot read_pdf函數中,table_area是已標準化的邊界框。

interesting_areas=[]output = [[x1, y1, x2, y2]]for x inoutput: [x1, y1, x2, y2] = bboxes_pdf(img, pdf_page, x) bbox_camelot = [ ",".join([str(x1), str(y1), str(x2), str(y2)]) ][0] # x1,y1,x2,y2 where (x1, y1) -> left-top and (x2, y2) -> right-bottom in PDF coordinate space #print(bbox_camelot) interesting_areas.append(bbox_camelot)print(interesting_areas)output_camelot = camelot.read_pdf( filepath=pdf_file, pages=str(pg), flavor="stream", table_areas=interesting_areas)output_camelot[0].df

這樣就可以將表格數據轉化為Panda數據框架,方便後續處理:

圖片怎麼辦

針對掃描圖片格式的PDF表格,可以使用Ocrmypdf包來將圖片格式PDF轉為文本格式。

Ocrmypdf是一個python軟體包,可將基於圖像的pdf轉換為基於文本的PDF。

安裝ocrmypdf,可以通過以下命令行將其用於macOS和Linux:

brew install ocrmypdf

通過以下命令調用:

ocrmypdfinput_file.pdfoutput_file.pdf

之後就可以按照上面的方法進行表格提取了。

怎麼樣,這款兼容圖片,又能白嫖谷歌GPU的PDF表格工具對你有幫助嗎?

傳送門

項目地址:https://github.com/ferrygun/PDFTableExtract

在線打標籤工具:https://www.makesense.ai/

相關焦點

  • 批量提取pdf文件信息(圖片、表格、文本等)
    pdf文件中一頁紙轉換一張圖片,多頁轉換多張,最後的圖片有後綴遞增序號來區分。此場景可以更進一步保護pdf裡的信息,或者用於圖片OCR文本識別時的提取,例如上一波用到的百度AI接口可以識別圖片文本信息,對于格式規範的如增值稅發票、身份證等,提取出來的文本是結構化的文本,即可識別出對應的內容屬於什麼欄位下的內容。一般的人工智慧OCR識別都需要先轉換為圖像才能調用接口來識別,沒有現成的直接對pdf文件的識別。
  • PDF提取表格的網頁工具——Excalibur
    在之前的文章另類爬蟲:從PDF文件中爬取表格數據中,我們知道如何利用Python的camelot模塊,通過寫Python程序來提取PDF中的表格數據。本文我們將學習如何用更便捷的工具從PDF中提取表格。  Excalibur是一個用來從PDF中提取表格數據的網頁工具,而它正是以camelot為基礎。
  • 深度學習中GPU和顯存分析
    這裡推薦一個好用的小工具:gpustat,直接pip install gpustat即可安裝,gpustat基於nvidia-smi,可以提供更美觀簡潔的展示,結合watch命令,可以動態實時監控GPU的使用情況。watch --color -n1 gpustat -cpu
  • 在 Ubuntu 16.04 中安裝支持 CPU 和 GPU 的 Google TensorFlow 神經網絡軟體
    它的創建者 Google 希望提供一個強大的工具以幫助開發者探索和建立基於機器學習的應用,所以他們在去年作為開源項目發布了它。TensorFlow 是一個非常強大的工具,專注於一種稱為深層神經網絡deep neural network(DNN)的神經網絡。深層神經網絡被用來執行複雜的機器學習任務,例如圖像識別、手寫識別、自然語言處理、聊天機器人等等。
  • 沒有白吃的午餐,谷歌在「收網」,以前免費服務,現在還能白嫖嗎
    諾基亞用的是塞班系統,曾經風靡一時,只是後來被兩大主流陣營安卓與ios給擊垮了,而國人最為熟悉的應該就是安卓系統了,因為中國生產的手機大部分多少基於谷歌開發的安卓系統,雖說是免費的,但是真的如此嗎?沒有白吃的午餐,谷歌在「收網」,以前免費服務,現在還能白嫖嗎?
  • 自帶中文字幕,所有筆記、資源全部免費!
    其中,速成部分有7節課,分別是:圖像分類SGD入門多標籤NLP反向傳播:從零開始的神經網絡CNNGAN如果你已經有了一定的基礎,那麼可以直接開始第二部分課程深度學習基礎。這一部分包含7課,從深度神經網絡的基礎結構講起,包括神經網絡的訓練過程、模型內部結構、數據塊的API等等。在Fast.ai官網上,每一節課的頁面,左邊是視頻播放,右邊有本節提綱,和其他網友詳細的學習筆記連結。此外還有各種豐富的擴展資料。
  • 如何在GPU上設計高性能的神經網絡
    gpu對於機器學習是必不可少的。可以通過AWS或谷歌cloud輕鬆地啟動這些機器的集群。NVIDIA擁有業內領先的GPU,其張量核心為Volta V100和安培A100加速哪種方法最適合你的神經網絡?為了以最低的成本設計出最快的神經網絡,機器學習架構師必須解決許多問題。此外,僅僅使用帶有GPU和張量核心的機器並不能保證最高性能。
  • 10分鐘白嫖我常用的20個頂級在線工具類網站清單
    6.Flourish:數據可視化https://flourish.studio/通過這個網站,你可以快速地把表格數據轉換為各種各樣好看的圖表,並且還支持動態可視化。並且,轉換為短連結之後,還能在後臺監測訪問數據,如訪問次數、訪問人數。
  • 神經網絡結構可視化工具大全
    ,這裡迫切需要一些專業領域內的工具來幫助我們完成這些工作。個人感覺這個網絡可視化工具沒有特別大的創新點,主要的亮點就在於在網絡的輸入和輸出的地方加入了輸入圖片和轉換處理後的結果圖片,視覺上更加直觀了。這款工具的GitHub地址請見下方。
  • PDF圖片提取
    之前我們使用pymupdf提取了PDF文檔中的文本信息(《PyMuPDF提取文本信息》),那麼對於圖片信息,也可以進行一波提取。今天我們一起來試試。一、簡介可以觀察到,該文檔中共有4張圖片。提取思路為:首先得到PDF文檔的所有對象,然後遍歷它們判斷是否是圖片類型,再將圖片信息寫入,最後保存為png格式文件。
  • 怎樣把PDF文件的圖片中的表格轉成Excel?
    如今使用PDF格式文檔的人越來越多,但有一些PDF是由圖片生成的,編輯起來非常費勁,所以一般都是轉成Word或Excel使用。那麼如何將這種圖片樣式的PDF文件中的表格提取成Excel後修改呢?一、電腦端適用方法:可以藉助一些有OCR識別功能的轉換工具,比如極速玩轉2019,可以一鍵批量處理多個文件,這樣能節省不少時間。
  • 神經網絡是怎樣理解圖片的?谷歌大腦研究員詳解特徵可視化
    這些圖像識別技術背後,通常是深度神經網絡。本文引用地址:http://www.eepw.com.cn/article/201711/371232.htm  不過,神經網絡究竟是怎樣認識圖像的?  △特徵可視化能夠告訴我們神經網絡在圖片中尋找的是什麼  特徵可視化這個強大的工具,就能幫我們理解神經網絡內部的世界,知道它們的工作原理。
  • PDF四大翻譯引擎中英互譯!會議之眼工具篇!
    知雲文獻翻譯軟體既是一款閱讀英文pdf文獻和書籍的翻譯軟體、同時也是一款功能強大的pdf閱讀器,幾乎可以替代adobe pdf或FoxitReader等pdf閱讀器。軟體擁有百度AI翻譯、谷歌智能雲翻譯、谷歌生物醫學翻譯、有道翻譯四大搜尋引擎,支持英譯中、中譯英,不管是看文章,寫文章,都不用愁了。其中,谷歌生物醫學翻譯引擎專門針對科研專業語庫做過高強度訓練,翻譯質量堪比人工!
  • 在線文字圖片識別工具
    騰訊優圖,提供圖片整體文字的檢測和識別服務,返回文字框位置與文字內容。支持多場景、任意版面下整圖文字的識別,以及中英文、字母、數字、常見字符的識別。百度文字識別,支持多場景下的文字檢測識別。OCRMaker,提供在線文字識別,文字提取等服務。文字在線識別工具,提供圖像文字識別、提取圖片文字、pdf文字識別、掃描文件識別服務、pdf轉Word文檔等服務,輸出結果支持PDF、Word和Txt格式等。圖片轉文字,提供在線圖片轉換成文字,在線圖片識別文字等服務。
  • 資源| 清華大學開源神經機器翻譯工具包THUMT
    最小風險訓練:除了標準最大似然估計(MLE)之外,THUMT 還支持最小風險訓練(MRT),其目的是找到一組模型參數,以最小化使用訓練數據評估指標(如 BLEU)計算的預期損失。使用單一語言語料庫:THUMT 為 NMT 提供了半監督訓練(SST)能力,能夠利用豐富的單語語料庫資源來改善源-目標和目標-源 NMT 模型的學習。
  • Steam、epic、谷歌,三大遊戲商店「免費白嫖」日!
    今天換成「白嫖計劃」,讓大家能白嫖更多的遊戲! 今天推送的白嫖計劃主要涉及了三個遊戲商店,分別是:Steam、Epic和谷歌商店(Google Play)。
  • ABBYY PDF Transformer+ PDF文檔轉換工具
    這種多用途的PDF解決方案軟體功能直觀將界面和協作工具運用泰比(ABBYY)的光學字符識別(OCR)技術和Adobe®PDF庫技術結合,來確保簡單的處理任何類型的PDF並且幫助你增加日常業務效率。享受直觀導航使用直觀的導航工具方便地瀏覽PDF內容。您可以在頁與頁之間快速跳轉;使用「適合寬度」選項放大或縮小。審閱和評價分享!泰比(ABBYY)PDF Transformer的兼容性意味著你可以輕鬆分享或者接收任何PDF類型的評論,註解。方便的工具,使簡單的回顧pdf文檔添加評論和注釋,突出顯示的文本和討論狀態。
  • Python一鍵提取PDF中的表格到Excel(實例50)
    上市公司的年報往往包含幾百張表格,用它作為例子再合適不過,搞定這個,其他含表格的PDF都是小兒科了。今天以"保利地產年報"為例,這個PDF文檔中有321頁含有表格,總表格數超過這個數了。 先導入PDF讀取模塊pdfplumber,隨便挑一頁看下表格數據的結構。
  • 【資源】2020最新版《神經網絡與深度學習》中文版pdf下載
    之前,小湯也分享了多份機器學習資料,如:(點擊即可獲取)資源| 最新版《機器學習基礎》pdf分享(附下載)這些資料都受到了不少朋友的好評。今天,StrongerTang 繼續給大家分享一下《神經網絡與深度學習》,分享給有需要的小夥伴,也希望有更多的朋友能在 StrongerTang 相遇。《神經網絡和深度學習》是一本免費的在線書,對讀者數學知識需求適度,兼顧理論和動手實踐。
  • 【Python】解析PDF文本和表格的四大方法介紹
    Python目前解析PDF的擴展包有很多,本文將對比介紹PyPDF2、pdfplumber、pdfminer3k以及Camelot,告訴你哪個是好用的PDF解析工具。(table)df可以看出這個函數非常容易的將PDF文檔中的表格提取出來了。