Wyodrębnij tabele z obrazów w Pythonie
Wyodrębnianie tabel z obrazów może być żmudnym i czasochłonnym zadaniem, zwłaszcza jeśli masz do przetworzenia dużą liczbę obrazów. Jednak dzięki odpowiednim narzędziom i technikom możesz zautomatyzować ten proces i szybko i łatwo wyodrębnić tabele z obrazów.
W tym artykule przyjrzymy się, jak wyodrębnić tabele z obrazów za pomocą Pythona. Omówimy bibliotekę ( img2table ), której można użyć do identyfikacji i wyodrębnienia tabel z obrazów, wraz z przykładowym kodem i objaśnieniami. Niezależnie od tego, czy pracujesz ze zeskanowanymi dokumentami, zdjęciami czy innymi typami obrazów, ten artykuł dostarczy Ci narzędzi i wiedzy potrzebnych do wydajnego i dokładnego wyodrębniania tabel.
Co to jest img2table?
Img2Table to prosta, przyjazna dla użytkownika biblioteka Pythona do wyodrębniania i identyfikacji tabel, oparta na przetwarzaniu obrazu OpenCV i obsługująca pliki PDF oprócz większości popularnych formatów plików graficznych.
Dzięki swojej konstrukcji stanowi użyteczną i lżejszą alternatywę dla rozwiązań opartych na sieciach neuronowych, szczególnie w zakresie wykorzystania procesora.
Obsługuje następujące formaty plików:
- Pliki JPEG — .jpeg, .jpg, *.jpe
- Przenośna grafika sieciowa — *.png
- Pliki JPEG 2000 — *.jp2
- Mapy bitowe Windows — .bmp, .dib
- WebP — *.webp
- Przenośny format obrazu — .pbm, .pgm, .ppm .pxm, *.pnm
- Pliki PFM — *.pfm
- Pliki obrazów OpenEXR — *.exr
- Obwiednie na poziomie komórek tabeli i identyfikacja tabeli dla obrazów i plików PDF.
- Radzenie sobie ze skomplikowanymi strukturami tabel, takimi jak scalone komórki.
- Ekstrakcja tytułów tabel.
- Wyodrębnianie zawartości tabeli przy jednoczesnym wsparciu narzędzi i usług OCR.
- Zwracana jest reprezentacja Pandas DataFrame i prosty obiekt reprezentujący wyodrębnione tabele.
- Zachowaj oryginalną strukturę wyodrębnionych tabel, eksportując je do pliku Excel.
Realizacja
Instalacja
Podobnie jak każdy inny pakiet Pythona, img2table można zainstalować za pomocą pliku pip.
pip install img2table
from img2table.document import Image
image = Image(src,dpi=200, detect_rotation=False)
Weźmy przykład.
from img2table.document import Image
# Instantiation of the image
img = Image(src="image.jpg")
# Table identification
imgage_tables = img.extract_tables()
# Result of table identification
imgage_tables
#output
[ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)),
ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]
from img2table.document import PDF
pdf = PDF(src, dpi=200, pages=[0, 2])
Praca z OCRem
Aby przeanalizować zawartość tabel, img2tableoferuje interfejs dla różnych narzędzi i usług OCR.
from img2table.ocr import TesseractOCR
ocr = TesseractOCR(n_threads=1, lang="eng", tessdata_dir="...")
Uwaga: Korzystanie z Tesseract-OCR wymaga wcześniejszej instalacji.
Spójrzmy na przykład.
from img2table.document import PDF
from img2table.ocr import TesseractOCR
# Instantiation of the pdf
pdf = PDF(src="tablesfile.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)
Metoda extract_tablesdokumentu umożliwia jednoczesne wyodrębnianie wielu tabel ze strony PDF lub obrazu.
from img2table.ocr import TesseractOCR
from img2table.document import Image
# Instantiation of OCR
ocr = TesseractOCR(n_threads=1, lang="eng")
# Instantiation of document, either an image or a PDF
doc = Image(src, dpi=200)
# Table extraction
extracted_tables = doc.extract_tables(ocr=ocr,
implicit_rows=True,
borderless_tables=False,
min_confidence=50)
Wniosek
Biblioteka OpenCV-python i OpenCV są używane do całego przetwarzania obrazu. Podstawą algorytmu jest transformacja Hougha , która rozpoznaje linie na obrazie. Pozwala nam rozpoznać poziome i pionowe linie obrazu. Biblioteka tak naprawdę nie ma nic więcej, ponieważ intencją było zachowanie jak największej prostoty, aby uniknąć potencjalnych komplikacji, które mogą wyniknąć z zastosowania innych podejść.
Zobacz dokumentację projektu w serwisie GitHub .
Połączmy się na Twitterze i LinkedIn . Możesz również zasubskrybować mój kanał na YouTube .
Szczęśliwego kodowania!

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































