Skip to content
数字人文

用 Potato 做数字人文研究

用一款免费、可自托管的工具逐行校对 Transkribus 或 eScriptorium 的 HTR 结果,标注 IIIF 手稿,并在 TEI 版本中标记实体。

Potato 能逐行校对手写文本识别(HTR)结果,标注来自 IIIF 清单的手稿图像,在 TEI 版本中标记人名和地名,再把修正后的成果写回为 PAGE XML、IIIF 标注、W3C Web Annotation 或 TEI。Potato 免费开源,运行在你自己的服务器上。

大多数人文标注都从一轮自动处理或一个现有版本开始:来自 Transkribus 或 eScriptorium 的 HTR 输出、图书馆的 IIIF 清单,或一份 TEI 文件。剩下的工作要靠人完成,常常由学生、志愿者或项目团队分担。Potato 负责这一步:每个导入器根据源文件生成可运行的项目,源文件自带的标注作为预标注载入,由人确认或修正,每个导出器再以相同格式写回修正后的成果。

Potato 中的数字人文任务

每一行是由一对导入器和导出器支持的工作流,详见数字人文格式页面。

任务Potato 的做法格式
校对 HTR 或 OCR 输出每个文本行一个条目,从页面图像中裁出,在 text_edit 方案中修正,界面显示与机器识别结果的逐词差异来自 Transkribus、eScriptorium 或 OCR-D 的 PAGE XML
校正页面版面每页一个条目,每个区域和文本行都是按区域类型标注的多边形PAGE XML(--page-xml-mode regions)
标注手稿图像每个 IIIF canvas 一个条目,已有标注显示为可编辑的形状IIIF Presentation 3 和 2.x 清单
在版本中标记实体<persName>、<placeName>、<orgName>、<date> 和 <rs> 变成可编辑的片段TEI P5
在查看器之间迁移标注文本引文和图像区域以 W3C Web Annotation 形式保存Annotorious、Mirador、Hypothesis
私下运行众包工作流Zooniverse 工作流转换为 Potato 方案,其分类结果可以作为已保存的工作导入Zooniverse 项目导出

校对来自 Transkribus 或 eScriptorium 的 HTR 输出

导入时读取 Transkribus 或 eScriptorium 的 PAGE XML 导出,在 XML 旁边或 --image-dir 中找到每页的图像,然后生成一个项目。标注者每次看到从页面上裁出的一行,识别出的文本已就位,可直接修正。

bash
potato import -f page_xml -i transkribus-export/ -o htr-project
python potato/flask_server.py start htr-project/config.yaml -p 8000
python -m potato.export -c htr-project/config.yaml -f page_xml -o corrected/

page_xml 导出直接修改项目中每个 PAGE XML 文件的副本,文件的其余部分保持不变,因此修正后的文件可以送回 HTR 工具,作为训练用的真值数据。如果识别器为某一行存储了置信度,条目会把它保存为 htr_confidence。

与 Transkribus、eScriptorium、Zooniverse 和 Recogito 的分工

Potato 不识别手写文字,也不训练 HTR 模型。这两件事 Transkribus 和 eScriptorium 都能做,Potato 负责校对它们的输出。Zooniverse 面向公众志愿者项目,上线前要经过审核;Potato 适合私下运行同样的工作流,处理未公开的材料,由实验室团队或付费转录者完成。Recogito Studio 面向 TEI、IIIF 图像和 PDF 的协作标注。Potato 额外提供的是把条目分配给具体的人、在项目需要第二意见时为每个条目分配多名标注者,以及对标注者答案计算一致性指标。

由于 Potato 运行在你自己的服务器上,档案图像和未发表的转录文本都留在你能控制的基础设施中。所有脚本、样式表和字体都由安装目录提供,详见气隙与离线部署。

常见问题

Potato 能逐行校对 Transkribus 或 eScriptorium 的输出吗?

能。potato import -f page_xml 按阅读顺序为每个 TextLine 生成一个条目,标注者在显示逐词差异的 text_edit 方案中,对照行图像修正识别出的文本。page_xml 导出把修正写回源文件的副本。2013-07-15 和 2019-07-15 两个版本的 PAGE schema 都能读取。

能让几名志愿者转录同一批页面,并看到他们的分歧在哪里吗?

能。num_annotators_per_item 决定每一行或每一页由多少人查看,每个人的答案分别存储。Potato 2.13.1 不为校正后的转录计算一致性指标,JSONL 导出给出每个人对每一行的文本,可供比较。对于标注的人名和地名,裁定与分歧处理说明了如何审查标注者有分歧的条目,并记录最终版本。

能从 IIIF 清单加载图像,而不是上传文件吗?

能。potato import -f iiif 接受清单文件或 http(s) URL,每个 canvas 成为一个条目,图像取自该 canvas 的图像或其 Image 服务。iiif_annotations 导出写出标注页面,以及一份引用这些页面的清单副本,Mirador 和 Universal Viewer 都能打开。

Potato 和在 Zooniverse 上运行项目有什么不同?

Zooniverse 托管公开项目,并为这些项目招募志愿者。Potato 运行在你自己的服务器上,因此适合不能公开的材料或封闭的标注团队。potato import 能读取 Zooniverse 项目的工作流、subject 和分类导出,已有工作流可以迁移过来,不过问卷和转录任务不会被导入。

延伸阅读

从这里开始

示例设计

每个设计都是可以下载并直接运行的 Potato 配置。

DocLayNet Document Layout AnalysisDocument layout analysis with bounding box annotations. Annotators draw bounding boxes around layout elements (text blocks, tables, figures, headers, footers, lists) in document page images.DocBank Document Layout DetectionDocument layout analysis benchmark (Li et al., COLING 2020). Detect and classify document elements including titles, abstracts, paragraphs, figures, tables, and captions.DWIE Document-Level Entity Annotation and LinkingDocument-level entity mention annotation with knowledge-base linking based on DWIE (Zaporojets, Deleu, Develder, and Demeester, Information Processing & Management 2021). Annotators mark every entity mention in a full news article, assign an entity type, and link mentions to Wikipedia/Wikidata entries, leaving NIL entities unlinked. Complements the mention-level AIDA CoNLL-YAGO task (text/entity-linking/aida-conll-entity-disambiguation): AIDA presents one pre-marked mention at a time for disambiguation, whereas DWIE is entity-centric and document-level — annotators find all mentions themselves and keep links consistent across each entity's coreferent mentions.WikiArt Artwork ClassificationArt classification by style, genre, and artist (Saleh & Elgammal, 2015). Classify paintings into artistic movements, genres, and predict artist attribution.TimeLine: Cross-Document Event OrderingIdentify event mentions and temporal expressions in news text and classify temporal relations between events, based on SemEval-2015 Task 4 (Minard et al.). Annotators build timelines by ordering events related to a target entity across documents.

其他领域

全部应用场景