ホームページ  >  記事  >  テクノロジー周辺機器  >  Pythonを使用して画像からテーブルを抽出する

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

WBOY
WBOY転載
2023-11-17 22:15:071170ブラウズ

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

既存の OpenCV スクリプトからインスピレーションを得て、テーブルを抽出するシンプルで一貫した方法を開発し、それをオープンソースの Python ライブラリにしました: img2table

必要なコンテンツ書き換えられる内容は次のとおりです: リンク: https://github.com/xavctn/img2table

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

私のライブラリは何をするのですか? ?

深層学習ソリューションと比較して、この軽量パッケージはトレーニングを必要とせず、最小限のパラメーター化を必要とします。次の機能を提供します。

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

pip を使用してこのライブラリをインストールでき、インストール完了後にも使用できます。

pip install img2table
ドキュメント内のテーブルを識別するには、次の呼び出しを行うだけです。関数:

从img2table.document导入Image类# 图像实例化
img = Image(src="myimage.jpg")# 表格识别
img_tables = img.extract_tables()# 表格识别结果
img_tables[ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)), ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]

書き換える必要がある内容は次のとおりです: 上記の例で使用されている画像Pythonを使用して画像からテーブルを抽出する

テーブルの内容を抽出したい場合は、OCR ツールを使用する必要があります。以下の手順に従ってください:

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

サンプル表は、PDF ファイルから抽出されたサンプルですPythonを使用して画像からテーブルを抽出する

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

元の意味を変更する必要はありません。書き直す必要があるのは、「ボーダレス」テーブルの抽出例です。Pythonを使用して画像からテーブルを抽出する

これは、完全な内容!実際、リポジトリは複雑ではありません。私たちの目標はリポジトリをできる限り単純化し、複雑さをもたらす可能性のある他のソリューションの導入を避けることです。

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

基礎的な実装

すべての画像処理では OpenCV と opencv -python を使用しますライブラリが完成しました。ただし、これはまだかなり基本的なものです。

アルゴリズムの中心となるのは、画像内の直線を識別できるハフ変換です。これにより、画像内の水平線と垂直線を検出できるようになります

需要重写的内容是:cv2.HoughLinesP(img, rho, theta, threshold, None, minLinLength, maxLineGap)

この後、行からセルを識別し、さらにセルからテーブルを識別するために、行に対して何らかの処理を行う必要があります。

簡素化されたアルゴリズム表現の実装 Pythonを使用して画像からテーブルを抽出する

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

以上がPythonを使用して画像からテーブルを抽出するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。