Python を使用して画像からテーブルを抽出する

Python を使用して画像からテーブルを抽出する

約 1 年前、私はファイルからデータ、主にテーブルに含まれるデータを抽出して構造化するタスクを割り当てられました。私はコンピューター ビジョンに関する事前の知識がなかったため、適切な「プラグ アンド プレイ」ソリューションを見つけるのに苦労していました。当時利用できるオプションは、大規模で扱いにくい最先端のニューラル ネットワーク (NN) ベースのソリューションか、一貫性が十分でない OpenCV ベースのよりシンプルなソリューションのいずれかでした。

既存の OpenCV スクリプトに触発されて、テーブルを抽出するためのシンプルで一貫性のある方法を開発し、それをオープンソースの Python ライブラリ img2table にしました。

リンク: https://github.com/xavctn/img2table

私のライブラリは何をしますか?

ディープラーニング ソリューションと比較すると、この軽量パッケージではトレーニングは不要で、パラメータ化も最小限で済みます。以下の機能を提供します:

  • 表セル レベルの境界ボックスを含む、画像および PDF ファイル内の表を識別します。
  • サポートされている OCR サービス/ツールを使用してテーブル コンテンツを抽出します (現在、Tesseract、PaddleOCR、AWS Textract、Google Vision、Azure OCR がサポートされています)。
  • 結合されたセルなどの複雑なテーブル構造を処理します。
  • 画像の傾きと回転を修正するメソッドを実装します。
  • 抽出されたテーブルは、Pandas DataFrame 表現を含む単純なオブジェクトとして返されます。
  • 抽出されたテーブルを元の構造を保持したまま Excel ファイルとしてエクスポートするオプション。

どうやって使うの?

pip 経由でライブラリをインストールして使用することができます。

 pip install img2table

ドキュメント内のテーブルを識別するのは、1 つの関数を呼び出すだけです。

 from img2table.document import Image # Instantiation of the image img = Image(src="myimage.jpg") # Table identification img_tables = img.extract_tables() # Result of table identification img_tables [ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)), ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]

上記の例で使用されている画像

テーブルの内容を抽出するには、OCR ツールを使用する必要があります。これは次のように実行できます。

 from img2table.document import PDF from img2table.ocr import TesseractOCR # Instantiation of the pdf pdf = PDF(src="mypdf.pdf") # Instantiation of the OCR, Tesseract, which requires prior installation ocr = TesseractOCR(lang="eng") # Table identification and extraction pdf_tables = pdf.extract_tables(ocr=ocr) # We can also create an excel file with the tables pdf.to_xlsx('tables.xlsx', ocr=ocr)

PDFから抽出した表の例

最後に、単純なケースでは、borderless_tables パラメータを設定することで、「境界のない」テーブル抽出を実行できます。これにより、セルを境界線で完全に囲まれる必要のないテーブルを検出できます。

「ボーダーレス」テーブル抽出例

それだけです!実際のところ、ライブラリには複雑なものはあまりありません。他の利用可能なソリューションによってもたらされる複雑さを回避するために、ライブラリをできるだけシンプルに保つことが目標だからです。

より詳細なドキュメントと例については、プロジェクトの GitHub ページをご覧ください: https://github.com/xavctn/img2table

低レベルの実装

すべての画像処理は OpenCV および opencv-python ライブラリを使用して行われます。しかし、これはまだかなり基本的なものです。

アルゴリズムのバックボーンとなるのはハフ変換で、画像内の線を識別し、画像内の水平線と垂直線を検出できます。

 cv2.HoughLinesP(img, rho, theta, threshold, None, minLinLength, maxLineGap)

その後、行に対していくつかの処理を実行して行からセルを識別し、次にセルからテーブルを識別します。

アルゴリズムの簡略化された表現を実装する

ほとんどの計算は、優れたパフォーマンスと速度を実現するために Polars を使用して実行されます。

<<: 

>>: 

ブログ    
ブログ    

推薦する

私は 8 つの企業と面接しましたが、機械学習に関する次のような質問をされました…

【はじめに】 筆者は今年初めからインドでデータサイエンス、機械学習、ディープラーニングの分野で仕事...

アンドリュー・ングのパレートの法則: データの 80% + モデルの 20% = より優れた機械学習

機械学習の進歩がモデルによってもたらされるのか、それともデータによってもたらされるのかは、今世紀の論...

シャンダイノベーション研究所とソゴウ研究者:自然言語処理の応用

【TechWeb Report】6月26日、山大創新研究所検索テーマ研究所研究員の賈文傑氏と捜狗自然...

最初の失業中の人工知能ロボット

デジタル化の大きな波の中で、一見些細な失敗が、深い疑問を浮かび上がらせます。それは、企業が業務に人工...

...

教師なしニューラル機械翻訳: 単一言語コーパスのみを使用する

概要: ニューラル機械翻訳 (NMT) は最近、標準ベンチマークで大きな成功を収めていますが、大規模...

73歳のヒントン氏は、次世代のニューラルネットワーク「教師なし対照学習」を考案した。

最近開催された第43回国際情報検索会議(ACM SIGIR2020)で、Geoffrey Hinto...

過去1年間、世界は人工知能の倫理について次のような考えを抱いてきた。

1月下旬に終了したCES 2019で、LGの社長兼最高技術責任者であるIP Park氏が、AIがど...

...

Hehe情報:AI + ビッグデータ、デジタル金融をさらに進化させる

[51CTO.comからのオリジナル記事] 2020年、COVID-19パンデミックは世界経済に深刻...

Google Project Ellman が Gemini AI モデルのシナリオを公開

Googleチームは、AI技術を使ってユーザーの写真や検索エンジンのクエリ情報を処理し、ユーザーの生...

...

医療業界における人工知能の応用が直面する5つの課題

ヘルスケアにおける人工知能 (AI) の実装に関する課題を特定することで、ヘルスケア提供者は適切な戦...

人工知能は目覚めたのか?アマゾンの人工知能は人間の命令を聞かず不気味な笑い声を上げる

人類が人工知能の開発に熱心に取り組み始めて以来、著名な科学者ホーキング博士をはじめ、疑問や反対の声が...

2021 年に企業に影響を与える自然言語処理のトレンド

[[384737]] [51CTO.com クイック翻訳] 昨今、自然言語技術は企業でますます活用さ...