[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-poloclub--unitable":3,"similar-poloclub--unitable":89},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":9,"readme_en":10,"readme_zh":11,"quickstart_zh":12,"use_case_zh":13,"hero_image_url":14,"owner_login":15,"owner_name":16,"owner_avatar_url":17,"owner_bio":18,"owner_company":19,"owner_location":19,"owner_email":19,"owner_twitter":20,"owner_website":21,"owner_url":22,"languages":23,"stars":36,"forks":37,"last_commit_at":38,"license":39,"difficulty_score":40,"env_os":41,"env_gpu":42,"env_ram":41,"env_deps":43,"category_tags":51,"github_topics":19,"view_count":35,"oss_zip_url":19,"oss_zip_packed_at":19,"status":54,"created_at":55,"updated_at":56,"faqs":57,"releases":88},7246,"poloclub\u002Funitable","unitable","UniTable: Towards a Unified Table Foundation Model","UniTable 是一个致力于统一表格结构识别的开源基础模型框架，旨在让机器更准确地理解图片中的复杂表格数据。传统表格识别往往依赖繁琐的任务特定组合，而 UniTable 通过自监督预训练技术，仅需像素级图像输入，即可同时完成表格结构提取、单元格内容识别及位置定位这三大核心任务。它将所有任务统一转化为语言建模目标，大幅简化了训练流程，并在多个主流数据集上取得了业界领先的性能表现。\n\n该项目的独特亮点在于其创新的“统一范式”：利用大量未标注的表格图像进行自监督学习，不仅降低了对人工标注数据的依赖，还显著提升了模型的泛化能力与扩展性。此外，团队提供了完整的 Jupyter Notebook 推理流水线，支持用户直接上传表格图片进行数字化处理，极大地方便了复现与应用。\n\nUniTable 非常适合人工智能研究人员、开发者以及需要处理大量文档数字化的数据工程师使用。研究人员可基于其架构探索新的表格表示学习方法；开发者能轻松集成模型权重，构建高效的文档解析应用；而对于需要批量转换纸质或截图表格为可编辑数据的专业用户，它也是一个强大且透明的解决方案。目前，模型权重已公开在 HuggingFace，","UniTable 是一个致力于统一表格结构识别的开源基础模型框架，旨在让机器更准确地理解图片中的复杂表格数据。传统表格识别往往依赖繁琐的任务特定组合，而 UniTable 通过自监督预训练技术，仅需像素级图像输入，即可同时完成表格结构提取、单元格内容识别及位置定位这三大核心任务。它将所有任务统一转化为语言建模目标，大幅简化了训练流程，并在多个主流数据集上取得了业界领先的性能表现。\n\n该项目的独特亮点在于其创新的“统一范式”：利用大量未标注的表格图像进行自监督学习，不仅降低了对人工标注数据的依赖，还显著提升了模型的泛化能力与扩展性。此外，团队提供了完整的 Jupyter Notebook 推理流水线，支持用户直接上传表格图片进行数字化处理，极大地方便了复现与应用。\n\nUniTable 非常适合人工智能研究人员、开发者以及需要处理大量文档数字化的数据工程师使用。研究人员可基于其架构探索新的表格表示学习方法；开发者能轻松集成模型权重，构建高效的文档解析应用；而对于需要批量转换纸质或截图表格为可编辑数据的专业用户，它也是一个强大且透明的解决方案。目前，模型权重已公开在 HuggingFace，欢迎社区共同探索与改进。","# UniTable: Towards a Unified Table Foundation Model\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpoloclub_unitable_readme_1d79a7df22b9.gif\" alt=\"Demo\" width=\"700\"\u002F>\u003C\u002Fp>\n\n1.  📈 [High-Performance Transformers for Table Structure Recognition Need Early Convolutions](https:\u002F\u002Farxiv.org\u002Fabs\u002F2311.05565). ShengYun Peng, Seongmin Lee, Xiaojing Wang, Rajarajeswari Balasubramaniyan, Duen Horng Chau. In *NeurIPS Second Table Representation Learning Workshop*, 2023. (Oral)\n2.  🚀 [Self-Supervised Pretraining for Table Structure Recognition Transformer](https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.15578). ShengYun Peng, Seongmin Lee, Xiaojing Wang, Rajarajeswari Balasubramaniyan, Duen Horng Chau. In *AAAI Scientific Document Understanding Workshop*, 2024. (Oral)\n3.  🆕 [UniTable: Towards a Unified Framework for Table Structure Recognition via Self-Supervised Pretraining](https:\u002F\u002Farxiv.org\u002Fabs\u002F2403.04822). ShengYun Peng, Seongmin Lee, Xiaojing Wang, Rajarajeswari Balasubramaniyan, Duen Horng Chau. ArXiv, 2024.\n\nTables convey factual and quantitative data with implicit conventions created by humans that are often challenging for machines to parse. Prior work on table recognition (TR) has mainly centered around complex task-specific combinations of available inputs and tools. We present UniTable, a training framework that unifies training paradigm, training objective, and model architecture of TR.\nIts training paradigm combines the simplicity of purely pixel-level inputs with the effectiveness and scalability empowered by self-supervised pretraining (SSP) from diverse unannotated tabular images. Our framework unifies the training of all three TR tasks — extracting table structure, cell content, and cell bounding box (bbox) — into a unified task-agnostic training objective: language modeling. Extensive quantitative and qualitative analyses highlight UniTable’s state-of-the-art (SOTA) performance on four of the largest TR datasets. To promote reproducible research, enhance transparency, and SOTA innovations, we have released the first-of-its-kind [Jupyter Notebook](.\u002Fnotebooks\u002Ffull_pipeline.ipynb) of the entire inference pipeline, fine-tuned across multiple TR datasets, supporting all three TR tasks.\n\n\n> This repo includes code for linear projection Transformers. For convolutional stem (early convolution) Transformers, please check out our [tsr-convstem repo](https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Ftsr-convstem). \n\n# News\n`Apr. 2024` - You can fully digitalize your own tabular image in our [Jupyter Notebook](.\u002Fnotebooks\u002Ffull_pipeline.ipynb).\n\n`Apr. 2024` - UniTable v1.0.0 is now online with model weights available at [HuggingFace](https:\u002F\u002Fhuggingface.co\u002Fpoloclub\u002FUniTable\u002Ftree\u002Fmain).\n\n`Feb. 2024` - We presented \"Self-Supervised Pretraining\" paper at AAAI'24.\n\n`Jan. 2024` - \"Self-Supervised Pretraining\" paper was selected as [oral](https:\u002F\u002Fsites.google.com\u002Fview\u002Fsdu-aaai24\u002Fschedule?authuser=0).\n\n`Dec. 2023` - \"Self-Supervised Pretraining\" paper was accepted by [AAAI'24 Scientific Document Understanding Workshop](https:\u002F\u002Fsites.google.com\u002Fview\u002Fsdu-aaai24\u002Fschedule?authuser=0).\n\n`Dec. 2023` - We presented \"Early Convolutions\" paper at [NeurIPS'23](https:\u002F\u002Fx.com\u002FRealAnthonyPeng\u002Fstatus\u002F1735715161476866135?s=20).\n\n`Oct. 2023` - \"Early Convolutions\" paper was selected as [oral](https:\u002F\u002Ftable-representation-learning.github.io\u002F#accepted-papers).\n\n`Oct. 2023` - \"Early Convolutions\" paper was accepted by [NeurIPS'23 Table Representation Learning Workshop](https:\u002F\u002Ftable-representation-learning.github.io\u002F).\n\n# Quick Start\n1. Set up virtual environment (unitable) by running `make .done_venv` in your terminal.\n2. Download all the model weights from [HuggingFace](https:\u002F\u002Fhuggingface.co\u002Fpoloclub\u002FUniTable\u002Ftree\u002Fmain) by running `make .done_download_weights` in your terminal.\n3. Try out our demo [Jupyter Notebook](.\u002Fnotebooks\u002Ffull_pipeline.ipynb) with your own tabular image! Remember to select \"unitable\" as your notebook kernel. \n\n# Training\nOur code is driven by [Makefile targets](https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fmake\u002Fmanual\u002Fmake.html) and configured by [Hydra](https:\u002F\u002Fhydra.cc\u002Fdocs\u002Fintro\u002F). Experiment names are defined as `EXP_\u003Cname>` in [CONFIG.mk Sec. Experiments](CONFIG.mk). We have also provided how to launch the make target in the comment above each experiment.\n## Dataset annotation format\nWe provide a tiny portion (20 samples) of PubTabNet as an example for a quick walk through of the training process. The dataset (tabular image and annotation) is available at [dataset\u002Fmini_pubtabnet](.\u002Fdataset\u002Fmini_pubtabnet\u002F). The annotation for all images are in [mini_pubtabnet_examples.jsonl](.\u002Fdataset\u002Fmini_pubtabnet\u002Fmini_pubtabnet_examples.jsonl). Each line is a `json` object that corresponds to a `png` image with the following structure:\n\n```python\n\"filename\": \"tabular image filename inside one of the 'train', 'val', or 'test'\",\n\"split\": \"One of 'train', 'val', or 'test'\",\n\"html\": \"table structure, cell content, and cell bbox\",\n    \"cells\": \"Array with all cell content and bbox\",\n        \"tokens\": \"Array with the content of the cell\",\n        \"bbox\": \"The bounding bbox of the cell in [x1, y1, x2, y2] format. Only provided when cell is non-empty.\",\n    \"structure\": \"Dict with table structure\",\n        \"tokens\": \"Array with html tags that describe the table structure. '[]' represents non-empty cell\",\n```\n\nIf you want to train on your own dataset, please convert your dataset based on the provided format.\nThe five datasets we used in the paper are [PubTabNet](https:\u002F\u002Fgithub.com\u002Fibm-aur-nlp\u002FPubTabNet), [SynthTabNet](https:\u002F\u002Fgithub.com\u002FIBM\u002FSynthTabNet), [FinTabNet](https:\u002F\u002Fdeveloper.ibm.com\u002Fexchanges\u002Fdata\u002Fall\u002Ffintabnet\u002F), [ICDAR 2019 B2 Modern](https:\u002F\u002Fgithub.com\u002Fcndplab-founder\u002FICDAR2019_cTDaR), and [PubTables-1M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fbsmock\u002Fpubtables-1m).\nAfter downloading these datasets, please update the `root_dir` for each dataset under [configs\u002Fdataset\u002F\u003Cname>](.\u002Fconfigs\u002Fdataset\u002F).\n\n## Tracking your training progress\nPlease register [Weights & Biases account](https:\u002F\u002Fwandb.ai\u002Fsite) if you want to visualize training curves and reconstructed tables (for pretraining VQ-VAE only). An example of reconstructed tables by VQ-VAE:\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpoloclub_unitable_readme_e13ccd11b70b.png\" alt=\"wandb\" width=\"700\"\u002F>\u003C\u002Fp>\n\n\n## Finetuning\nWe present finetuning on the provided mini-PubTabNet. For more details on cross dataset finetuning, please check [CONFIG.mk](CONFIG.mk).\n```bash\n# table structure\nmake experiments\u002Fssp_2m_mini_html_base\u002F.done_finetune\n\n# cell bbox\nmake experiments\u002Fssp_2m_mini_bbox_base\u002F.done_finetune\n\n# cell content\nmake experiments\u002Fssp_2m_mini_cell_base\u002F.done_finetune\n```\n\n## Pretraining\nWe present training the VQ-VAE and pretraining the visual encoder on the provided mini-PubTabNet. For more details on cross dataset finetuning, please check [CONFIG.mk](CONFIG.mk).\n\n### VQ-VAE\n```bash\nmake experiments\u002Fvqvae_mini\u002F.done_pretrain\n```\n\n### SSP visual encoder - Masked tabular image modeling (MTIM)\n```bash\nmake experiments\u002Fmtim_mini_base\u002F.done_pretrain\n```\n\n## Multi-GPU\nThe default setting is a single gpu, i.e., `NGPU := 1` in [Makefile](Makefile). To enable multi-GPU, please launch the above command with the following format: `CUDA_VISIBLE_DEVICES=0,1,2,3 make NGPU=4 experiment\u002F\u003Cexp name>\u002F.done_\u003Ctraining type>`.\n\n## Citation\n```bibtex\n@article{peng2024unitable,\n  title={UniTable: Towards a Unified Framework for Table Structure Recognition via Self-Supervised Pretraining},\n  author={Peng, ShengYun and Lee, Seongmin and Wang, Xiaojing and Balasubramaniyan, Rajarajeswari and Chau, Duen Horng},\n  journal={arXiv preprint},\n  year={2024}\n}\n\n@article{peng2024self,\n  title={Self-Supervised Pretraining for Table Structure Recognition Transformer},\n  author={Peng, ShengYun and Lee, Seongmin and Wang, Xiaojing and Balasubramaniyan, Rajarajeswari and Chau, Duen Horng},\n  journal={arXiv preprint},\n  year={2024}\n}\n\n@inproceedings{peng2023high,\n  title={High-Performance Transformers for Table Structure Recognition Need Early Convolutions},\n  author={Peng, Anthony and Lee, Seongmin and Wang, Xiaojing and Balasubramaniyan, Rajarajeswari Raji and Chau, Duen Horng},\n  booktitle={NeurIPS 2023 Second Table Representation Learning Workshop},\n  year={2023}\n}\n```\n## Contact\nIf you have any questions, feel free to contact [Anthony Peng](https:\u002F\u002Fshengyun-peng.github.io\u002F) (CS PhD @Georgia Tech).\n\n","# UniTable：迈向统一的表格基础模型\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpoloclub_unitable_readme_1d79a7df22b9.gif\" alt=\"演示\" width=\"700\"\u002F>\u003C\u002Fp>\n\n1.  📈 [用于表格结构识别的高性能Transformer需要早期卷积](https:\u002F\u002Farxiv.org\u002Fabs\u002F2311.05565)。彭圣云、李成珉、王晓静、拉贾拉杰斯瓦里·巴拉苏布拉马尼扬、周德鸿。载于 *NeurIPS第二届表格表示学习研讨会*，2023年。（口头报告）\n2.  🚀 [面向表格结构识别Transformer的自监督预训练](https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.15578)。彭圣云、李成珉、王晓静、拉贾拉杰斯瓦里·巴拉苏布拉马尼扬、周德鸿。载于 *AAAI科学文档理解研讨会*，2024年。（口头报告）\n3.  🆕 [UniTable：通过自监督预训练迈向统一的表格结构识别框架](https:\u002F\u002Farxiv.org\u002Fabs\u002F2403.04822)。彭圣云、李成珉、王晓静、拉贾拉杰斯瓦里·巴拉苏布拉马尼扬、周德鸿。ArXiv，2024年。\n\n表格以人类创建的隐含规范传达事实性和定量数据，而这些规范往往难以被机器解析。以往关于表格识别（TR）的研究主要集中在利用现有输入和工具构建复杂且任务特定的组合上。我们提出了UniTable，一个统一了TR训练范式、训练目标和模型架构的训练框架。\n其训练范式结合了纯像素级输入的简洁性与来自多样化未标注表格图像的自监督预训练（SSP）所带来的高效性和可扩展性。我们的框架将所有三项TR任务——提取表格结构、单元格内容和单元格边界框（bbox）——的训练统一到一个通用的任务无关训练目标：语言建模。广泛的定量和定性分析表明，UniTable在四个最大的TR数据集上均达到了当前最优（SOTA）性能。为促进可重复研究、提高透明度以及推动SOTA创新，我们发布了首个同类[Jupyter Notebook](.\u002Fnotebooks\u002Ffull_pipeline.ipynb)，该Notebook涵盖了整个推理流程，并在多个TR数据集上进行了微调，支持全部三项TR任务。\n\n\n> 此仓库包含线性投影Transformer的代码。如需使用卷积茎（早期卷积）Transformer，请查看我们的[tsr-convstem仓库](https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Ftsr-convstem)。\n\n# 新闻\n`2024年4月` - 您可以使用我们的[Jupyter Notebook](.\u002Fnotebooks\u002Ffull_pipeline.ipynb)对您自己的表格图像进行完全数字化处理。\n\n`2024年4月` - UniTable v1.0.0现已上线，模型权重可在[HuggingFace](https:\u002F\u002Fhuggingface.co\u002Fpoloclub\u002FUniTable\u002Ftree\u002Fmain)获取。\n\n`2024年2月` - 我们在AAAI'24上发表了“自监督预训练”论文。\n\n`2024年1月` - “自监督预训练”论文被选为[口头报告](https:\u002F\u002Fsites.google.com\u002Fview\u002Fsdu-aaai24\u002Fschedule?authuser=0)。\n\n`2023年12月` - “自监督预训练”论文被[AAAI'24科学文档理解研讨会](https:\u002F\u002Fsites.google.com\u002Fview\u002Fsdu-aaai24\u002Fschedule?authuser=0)接受。\n\n`2023年12月` - 我们在[NeurIPS'23](https:\u002F\u002Fx.com\u002FRealAnthonyPeng\u002Fstatus\u002F1735715161476866135?s=20)上发表了“早期卷积”论文。\n\n`2023年10月` - “早期卷积”论文被选为[口头报告](https:\u002F\u002Ftable-representation-learning.github.io\u002F#accepted-papers)。\n\n`2023年10月` - “早期卷积”论文被[NeurIPS'23表格表示学习研讨会](https:\u002F\u002Ftable-representation-learning.github.io\u002F)接受。\n\n# 快速入门\n1. 在终端运行`make .done_venv`以设置虚拟环境（unitable）。\n2. 在终端运行`make .done_download_weights`从[HuggingFace](https:\u002F\u002Fhuggingface.co\u002Fpoloclub\u002FUniTable\u002Ftree\u002Fmain)下载所有模型权重。\n3. 使用您自己的表格图像尝试我们的演示[Jupyter Notebook](.\u002Fnotebooks\u002Ffull_pipeline.ipynb)！请记得选择“unitable”作为您的笔记本内核。\n\n# 训练\n我们的代码由[Makefile目标](https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fmake\u002Fmanual\u002Fmake.html)驱动，并通过[Hydra](https:\u002F\u002Fhydra.cc\u002Fdocs\u002Fintro\u002F)进行配置。实验名称在[CONFIG.mk第Experiments节](CONFIG.mk)中定义为`EXP_\u003Cname>`。我们还在每个实验上方的注释中提供了如何启动相应Make目标的方法。\n## 数据集标注格式\n我们提供了一小部分（20个样本）PubTabNet数据，作为快速了解训练过程的示例。该数据集（表格图像和标注）位于[dataset\u002Fmini_pubtabnet](.\u002Fdataset\u002Fmini_pubtabnet\u002F)。所有图像的标注均存储在[mini_pubtabnet_examples.jsonl](.\u002Fdataset\u002Fmini_pubtabnet\u002Fmini_pubtabnet_examples.jsonl)中。每行是一个`json`对象，对应一张`png`图像，其结构如下：\n\n```python\n\"filename\": \"表格图像文件名，位于'train'、'val'或'test'目录之一\",\n\"split\": \"train、val或test中的一个\",\n\"html\": \"表格结构、单元格内容和单元格bbox\",\n    \"cells\": \"包含所有单元格内容和bbox的数组\",\n        \"tokens\": \"单元格内容的数组\",\n        \"bbox\": \"单元格的边界bbox，格式为[x1, y1, x2, y2]。仅在单元格非空时提供。\",\n    \"structure\": \"描述表格结构的字典\",\n        \"tokens\": \"描述表格结构的html标签数组。'[]'表示非空单元格\",\n```\n\n如果您希望使用自己的数据集进行训练，请按照提供的格式转换您的数据集。\n我们在论文中使用的五个数据集是[PubTabNet](https:\u002F\u002Fgithub.com\u002Fibm-aur-nlp\u002FPubTabNet)、[SynthTabNet](https:\u002F\u002Fgithub.com\u002FIBM\u002FSynthTabNet)、[FinTabNet](https:\u002F\u002Fdeveloper.ibm.com\u002Fexchanges\u002Fdata\u002Fall\u002Ffintabnet\u002F)、[ICDAR 2019 B2 Modern](https:\u002F\u002Fgithub.com\u002Fcndplab-founder\u002FICDAR2019_cTDaR)和[PubTables-1M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fbsmock\u002Fpubtables-1m)。\n下载这些数据集后，请在[configs\u002Fdataset\u002F\u003Cname>](.\u002Fconfigs\u002Fdataset\u002F)下更新每个数据集的`root_dir`。\n\n## 跟踪训练进度\n如果您想可视化训练曲线和重建的表格（仅适用于VQ-VAE预训练），请注册[Weights & Biases账户](https:\u002F\u002Fwandb.ai\u002Fsite)。以下是VQ-VAE重建表格的示例：\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpoloclub_unitable_readme_e13ccd11b70b.png\" alt=\"wandb\" width=\"700\"\u002F>\u003C\u002Fp>\n\n\n## 微调\n我们展示了在提供的mini-PubTabNet数据集上的微调。有关跨数据集微调的更多详细信息，请参阅[CONFIG.mk](CONFIG.mk)。\n```bash\n# 表格结构\nmake experiments\u002Fssp_2m_mini_html_base\u002F.done_finetune\n\n# 单元格bbox\nmake experiments\u002Fssp_2m_mini_bbox_base\u002F.done_finetune\n\n# 单元格内容\nmake experiments\u002Fssp_2m_mini_cell_base\u002F.done_finetune\n```\n\n## 预训练\n我们展示了在提供的mini-PubTabNet数据集上训练VQ-VAE以及预训练视觉编码器的过程。有关跨数据集微调的更多详细信息，请参阅[CONFIG.mk](CONFIG.mk)。\n\n### VQ-VAE\n```bash\nmake experiments\u002Fvqvae_mini\u002F.done_pretrain\n```\n\n### SSP视觉编码器 - 掩码表格图像建模（MTIM）\n```bash\nmake experiments\u002Fmtim_mini_base\u002F.done_pretrain\n```\n\n## 多GPU\n默认设置为单个 GPU，即在 [Makefile](Makefile) 中 `NGPU := 1`。若需启用多 GPU，请使用以下格式运行上述命令：`CUDA_VISIBLE_DEVICES=0,1,2,3 make NGPU=4 experiment\u002F\u003Cexp name>\u002F.done_\u003Ctraining type>`。\n\n## 引用\n```bibtex\n@article{peng2024unitable,\n  title={UniTable: 基于自监督预训练的统一表格结构识别框架},\n  author={Peng, ShengYun 和 Lee, Seongmin 和 Wang, Xiaojing 和 Balasubramaniyan, Rajarajeswari 和 Chau, Duen Horng},\n  journal={arXiv 预印本},\n  year={2024}\n}\n\n@article{peng2024self,\n  title={用于表格结构识别的 Transformer 自监督预训练},\n  author={Peng, ShengYun 和 Lee, Seongmin 和 Wang, Xiaojing 和 Balasubramaniyan, Rajarajeswari 和 Chau, Duen Horng},\n  journal={arXiv 预印本},\n  year={2024}\n}\n\n@inproceedings{peng2023high,\n  title={高性能表格结构识别 Transformer 需要早期卷积},\n  author={Peng, Anthony 和 Lee, Seongmin 和 Wang, Xiaojing 和 Balasubramaniyan, Rajarajeswari Raji 和 Chau, Duen Horng},\n  booktitle={NeurIPS 2023 第二届表格表示学习研讨会},\n  year={2023}\n}\n```\n## 联系方式\n如有任何问题，请随时联系 [Anthony Peng](https:\u002F\u002Fshengyun-peng.github.io\u002F)（佐治亚理工学院计算机科学博士）。","# UniTable 快速上手指南\n\nUniTable 是一个统一的表格结构识别基础模型框架，支持从表格图像中提取表格结构、单元格内容及单元格边界框（bbox）。该模型基于自监督预训练（SSP），在多个主流数据集上达到了最先进（SOTA）性能。\n\n## 环境准备\n\n*   **操作系统**: Linux \u002F macOS (Windows 用户建议使用 WSL2)\n*   **Python**: 建议 Python 3.8+\n*   **依赖管理**: `make`, `git`\n*   **硬件要求**: 推荐使用 NVIDIA GPU 进行推理或训练（单卡即可运行演示，多卡需配置 `CUDA_VISIBLE_DEVICES`）\n*   **网络环境**: 需要访问 Hugging Face 下载模型权重。国内用户若访问受阻，可配置镜像源或使用代理。\n\n## 安装步骤\n\n1.  **克隆仓库**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fpoloclub\u002FUniTable.git\n    cd UniTable\n    ```\n\n2.  **创建虚拟环境**\n    在项目根目录下运行以下命令，自动创建名为 `unitable` 的虚拟环境并安装依赖：\n    ```bash\n    make .done_venv\n    ```\n    *注意：此步骤可能需要几分钟时间安装 PyTorch 及其他依赖库。*\n\n3.  **下载模型权重**\n    从 Hugging Face 下载预训练模型权重：\n    ```bash\n    make .done_download_weights\n    ```\n    > **国内加速提示**：如果默认下载速度慢或失败，建议手动访问 [Hugging Face 模型页](https:\u002F\u002Fhuggingface.co\u002Fpoloclub\u002FUniTable\u002Ftree\u002Fmain) 下载文件至本地 `weights` 目录（具体路径请参考项目内脚本逻辑），或使用国内镜像站（如 `hf-mirror.com`）设置环境变量：\n    > ```bash\n    > export HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com\n    > make .done_download_weights\n    > ```\n\n## 基本使用\n\nUniTable 提供了一个完整的 Jupyter Notebook 演示，支持上传任意表格图片进行数字化处理（提取结构、内容和坐标）。\n\n1.  **启动 Jupyter Notebook**\n    确保激活了之前创建的虚拟环境：\n    ```bash\n    source unitable\u002Fbin\u002Factivate  # Linux\u002FmacOS\n    # 或\n    source unitable\\Scripts\\activate  # Windows\n    \n    jupyter notebook\n    ```\n\n2.  **运行演示流程**\n    *   在浏览器打开的 Jupyter 界面中，导航至 `notebooks\u002F` 目录。\n    *   打开 `full_pipeline.ipynb` 文件。\n    *   **关键步骤**：在菜单栏点击 `Kernel` -> `Change kernel`，选择 **`unitable`** 作为当前内核。\n    *   按顺序执行单元格代码。你可以替换示例图片为你自己的表格图像（支持 PNG\u002FJPG 格式），即可看到模型输出的表格结构、文本内容及边界框可视化结果。\n\n3.  **命令行微调示例（可选）**\n    如果你希望在自己的小规模数据上进行微调，可以使用内置的 Makefile 目标。以下是在提供的迷你 PubTabNet 数据集上微调“表格结构”任务的示例：\n    ```bash\n    make experiments\u002Fssp_2m_mini_html_base\u002F.done_finetune\n    ```\n    其他任务（单元格 bbox、单元格内容）只需替换对应的 target 名称（参考 README 中的 Training 章节）。","某金融数据分析师需要从数千份扫描版的历史财报 PDF 中提取表格数据，以构建行业趋势分析模型。\n\n### 没有 unitable 时\n- **结构识别困难**：传统 OCR 工具只能提取文字，无法理解复杂的跨行合并单元格或嵌套表头，导致数据行列错位。\n- **人工清洗成本高**：工程师需编写大量正则表达式和启发式规则来修复错乱的表格结构，耗时且难以覆盖所有版式。\n- **泛化能力差**：针对不同来源（如扫描件、截图、不同排版）的表格，往往需要训练多个专用模型或手动调整参数。\n- **信息丢失严重**：难以同时精准获取单元格内容、结构关系及边界框坐标，导致后续量化分析缺乏空间上下文。\n\n### 使用 unitable 后\n- **端到端结构化还原**：unitable 基于自监督预训练，能直接输入像素级图像，精准识别包括合并单元格在内的复杂表格拓扑结构。\n- **统一任务简化流程**：它将提取结构、内容和边界框统一为语言建模任务，无需组合多种工具，一套模型即可输出完整的数字化表格。\n- **零样本适应性强**：得益于在多样未标注表格图像上的预训练，unitable 对未见过的财报版式具有极强的泛化能力，无需针对新格式重新训练。\n- **全链路可复现**：通过官方提供的 Jupyter Notebook，分析师可一键部署推理流水线，快速将非结构化图片转化为高质量的结构化数据。\n\nunitable 通过统一的自监督学习框架，彻底解决了机器解析复杂人类表格惯例的难题，将非结构化文档转化为可用数据的效率提升了数量级。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpoloclub_unitable_1d79a7df.gif","poloclub","Polo Club of Data Science, Georgia Tech","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fpoloclub_f4e3237c.png","Human-Centered AI, AI Security, Visual Analytics, Graph Mining & Visualization",null,"polodataclub","https:\u002F\u002Fpoloclub.github.io","https:\u002F\u002Fgithub.com\u002Fpoloclub",[24,28,32],{"name":25,"color":26,"percentage":27},"Jupyter Notebook","#DA5B0B",84.5,{"name":29,"color":30,"percentage":31},"Python","#3572A5",13.5,{"name":33,"color":34,"percentage":35},"Makefile","#427819",2,525,39,"2026-04-07T07:16:33","MIT",3,"未说明","支持多 GPU 训练（通过 CUDA_VISIBLE_DEVICES 设置），默认单 GPU。具体型号和显存大小未说明，但涉及 Transformer 和 VQ-VAE 模型训练，建议具备较高显存的 NVIDIA GPU。",{"notes":44,"python":41,"dependencies":45},"项目使用 Makefile 和 Hydra 进行配置管理。需通过 'make .done_venv' 创建虚拟环境。模型权重托管在 HuggingFace，首次运行需下载。提供完整的推理 pipeline Jupyter Notebook。若需使用带早期卷积（early convolutions）的模型，需参考另一个仓库 (tsr-convstem)。训练数据需转换为特定的 JSONL 格式。",[46,47,48,49,50],"torch","transformers","hydra-core","wandb","jupyter",[52,53],"图像","其他","ready","2026-03-27T02:49:30.150509","2026-04-14T04:35:10.612079",[58,63,68,73,78,83],{"id":59,"question_zh":60,"answer_zh":61,"source_url":62},32539,"模型在处理大表格时为什么只检测到 256 个单元格？是否有参数可以修改以提取更多单元格？","这是因为模型输出长度可能被限制。对于大表格，目前的解决方案是采用切片和组合技术（slicing and combining techniques）。具体做法是编写脚本水平裁剪表格并添加额外的边界框：检测预测的单元格数量，如果超过边界框数量，找到最后一行不完整行的 ymax 坐标作为裁剪起点，然后对图像进行裁剪处理以覆盖剩余部分。","https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Funitable\u002Fissues\u002F2",{"id":64,"question_zh":65,"answer_zh":66,"source_url":67},32540,"输入图像尺寸大于 448x448 时表格结构检测错位，是否支持更大尺寸的输入？如何改善？","模型默认会将图像调整为 448x448，这可能导致非正方形或长宽比特殊的表格结构错位。建议尝试保持原始纵横比（preserving aspect ratio）进行处理，这在非正方形表格的案例中效果通常更好。此外，确保表头和内容对齐时，需检查 `build_table_from_html_and_cell` 函数中 HTML 输出与单元格检测结果的连接逻辑。","https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Funitable\u002Fissues\u002F10",{"id":69,"question_zh":70,"answer_zh":71,"source_url":72},32541,"训练后的模型推理结果中，非空单元格显示为 `\u003Ctd>\u003C\u002Ftd>` 而不是 `\u003Ctd>[]\u003C\u002Ftd>`，原因是什么？","UniTable 约定空单元格标记为 `\u003Ctd>\u003C\u002Ftd>`，非空单元格标记为 `\u003Ctd>[]\u003C\u002Ftd>`。如果出现异常，请检查训练数据标注文件（jsonl 格式）。在 PubTabNet 原始数据中可能未包含方括号格式，你需要手动在标注文件中为非空单元格添加 `[]` 标记（例如：`\u003Ctd>[', ']\u003C\u002Ftd>`），格式可参考项目中的 `mini_pubtabnet_examples.jsonl` 文件。同时确认词汇表（vocab_html.json）中包含相应的特殊 token。","https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Funitable\u002Fissues\u002F30",{"id":74,"question_zh":75,"answer_zh":76,"source_url":77},32542,"当表格结构提取模型输出的 HTML 单元格数量与边界框（bbox）检测模型的数量不一致时，该如何解决？","这是一个开放性问题，目前 UniTable 将解析分为结构、边界框和内容三个分支。若出现数量不匹配（特别是存在跨列单元格或大量空单元格时），一种激进的简化方案是主要依赖边界框检测结果，通过寻找局部最小值来绘制网格轴线，从而重建表格结构。另一种思路是将其视为最小化问题，寻找边界框与 HTML 单元格的最佳分配方案，但在大表格中计算复杂度较高。","https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Funitable\u002Fissues\u002F4",{"id":79,"question_zh":80,"answer_zh":81,"source_url":82},32543,"使用预训练模型识别中文表格时效果很差且字符乱码，是因为训练数据只有英文吗？","是的，预训练模型的所有训练数据集均基于英文，因此直接用于中文会导致 OCR 部分失效（字符乱码），但表格结构检测通常仍然有效。解决方案是替换 OCR 分支：保留 UniTable 的结构检测能力，接入支持中文的 OCR 引擎（如 PaddleOCR）来数字化表格中的文字内容。","https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Funitable\u002Fissues\u002F26",{"id":84,"question_zh":85,"answer_zh":86,"source_url":87},32544,"在进行微调（Finetuning）时，发现没有加载 SSP 预训练权重，应该如何配置？","如果在运行微调脚本时发现未加载预训练权重，请检查 `main.py` 文件中关于模型初始化的逻辑。确保在命令行参数或配置文件中正确指定了预训练权重路径（通常对应 `--weights` 或类似参数），并确认代码中 `EncoderDecoder` 模型初始化部分包含了加载权重的逻辑。如果使用的是官方提供的训练命令模板（如 `EXP_ssp_...`），请确保其中引用的 `$(WEIGHTS_...)` 变量已正确指向你的预训练模型文件。","https:\u002F\u002Fgithub.com\u002Fpoloclub\u002Funitable\u002Fissues\u002F9",[],[90,101,109,117,126,135],{"id":91,"name":92,"github_repo":93,"description_zh":94,"stars":95,"difficulty_score":40,"last_commit_at":96,"category_tags":97,"status":54},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,"2026-04-06T06:32:30",[98,99,52,100],"Agent","开发框架","数据工具",{"id":102,"name":103,"github_repo":104,"description_zh":105,"stars":106,"difficulty_score":40,"last_commit_at":107,"category_tags":108,"status":54},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[99,52,98],{"id":110,"name":111,"github_repo":112,"description_zh":113,"stars":114,"difficulty_score":35,"last_commit_at":115,"category_tags":116,"status":54},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[99,52,98],{"id":118,"name":119,"github_repo":120,"description_zh":121,"stars":122,"difficulty_score":35,"last_commit_at":123,"category_tags":124,"status":54},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[125,98,52,99],"插件",{"id":127,"name":128,"github_repo":129,"description_zh":130,"stars":131,"difficulty_score":40,"last_commit_at":132,"category_tags":133,"status":54},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[134,52,98,99],"语言模型",{"id":136,"name":137,"github_repo":138,"description_zh":139,"stars":140,"difficulty_score":40,"last_commit_at":141,"category_tags":142,"status":54},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[99,52,98,143],"视频"]