Table2HTML
A Python package that converts table images into HTML format using Object Detection model and OCR.
Installation
pip install table2html
Usage
Initialize
from table2html import Table2HTML
table_config = {
"model_path": r"table2html\models\det_table_v1.pt",
"confidence_threshold": 0.25,
"iou_threshold": 0.7,
}
row_config = {
"model_path": r"table2html\models\det_row_v0.pt",
"confidence_threshold": 0.25,
"iou_threshold": 0.7,
"task": "detect",
}
column_config = {
"model_path": r"table2html\models\det_col_v0.pt",
"confidence_threshold": 0.25,
"iou_threshold": 0.7,
"task": "detect",
}
table2html = Table2HTML(table_config, row_config, column_config)
Table Detection
image = cv2.imread(r"table2html\images\sample.jpg")
detection_data = table2html.TableDetect(image)
# Output: [{"table_bbox": Tuple[int]}]
# Visualize table detection (first table)
from table2html.source import visualize_boxes
cv2.imwrite(
"table_detection.jpg",
visualize_boxes(
image,
[detection_data[0]["table_bbox"]],
color=(0, 0, 255),
thickness=1
)
)
Table detection result:
Structure Detection
data = table2html.StructureDetect(image)
# Output: {
# "cells": List[Dict],
# "num_rows": int,
# "num_cols": int,
# "html": str
# }
# Visualize structure detection
from table2html.source import visualize_boxes
cv2.imwrite(
"structure_detection.jpg",
visualize_boxes(
image,
[cell['box'] for cell in data['cells']],
color=(0, 255, 0),
thickness=1
)
)
# Write HTML output
with open('table.html', 'w') as f:
f.write(data["html"])
Structure detection result:
HTML output: extracted html.
Full Pipeline
Note: The cell coordinates are relative to the cropped table image.
table_crop_padding = 15
detection_data = table2html(image, table_crop_padding)
# Output: [{
# "table_bbox": Tuple[int],
# "cells": List[Dict],
# "num_rows": int,
# "num_cols": int,
# "html": str
# }]
for i, data in enumerate(detection_data):
table_image = crop_image(image, data["table_bbox"], table_crop_padding)
cv2.imwrite(
"table_detection.jpg",
visualize_boxes(
image,
[data["table_bbox"]],
color=(0, 0, 255),
thickness=1
)
)
cv2.imwrite(
"structure_detection.jpg",
visualize_boxes(
table_image,
[cell['box'] for cell in data['cells']],
color=(0, 255, 0),
thickness=1
)
)
with open(f"table_{i}.html", "w") as f:
f.write(data["html"])
Input
image: numpy.ndarray (OpenCV/cv2 image format)
Outputs
A list of extracted tables in structured:
table_bbox: Tuple[int] - Bounding box coordinates (x1, y1, x2, y2) of the tablecells: List[Dict] - List of cell dictionaries, where each dictionary contains:row: int - Row indexcolumn: int - Column indexbox: Tuple[int] - Bounding box coordinates (x1, y1, x2, y2)text: str - Cell text content
num_rows: int - Number of rows in the tablenum_cols: int - Number of columns in the tablehtml: str - HTML representation of the table
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Metadata
Release files for table2html 1.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| table2html-1.4.2.tar.gz | 92.5 MB | With provenance | Details for table2html-1.4.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| table2html-1.4.2-py3-none-any.whl | Python 3 | none | any | Details for table2html-1.4.2-py3-none-any.whl |
Total release size: 185.0 MB
Release files / table2html-1.4.2.tar.gz
| Download URL | table2html-1.4.2.tar.gz |
|---|---|
| Size | 92.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d7e442602395e202a2bed95e2b5ad8559906ac5494dff70551dc66473a2bc56c
|
|
BLAKE2b-256 checksum How to use checksums |
6d16ac85a157102bf5c0fda8e4743040560696fb03cafbc74fa6fba804addf4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 3, 2024.
Transparency logRelease files / table2html-1.4.2-py3-none-any.whl
| Download URL | table2html-1.4.2-py3-none-any.whl |
|---|---|
| Size | 92.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3783c0701342f7e046a3b64fb507e25471f4e9dd053ea8c6c45a7dbe2f8998e2
|
|
BLAKE2b-256 checksum How to use checksums |
1f4c90ce3c91a68544a322f2a7acf99f402eb46a88a750ed70aa73e0f4e76c1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 3, 2024.
Transparency logSecurity for table2html 1.4.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for table2html-1.4.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 3, 2024.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.