Skip to main content

用于将 GROBID TEI XML 序列化为数据类的 Python 库

项目描述

格格不入

用于将 GROBID TEI XML 序列化为数据类的 Python

构建状态 覆盖状态 最新版本 蟒蛇版本 执照

安装

用于pip安装:

$ pip install grobid
$ pip install grobid[json] # for JSON serializable dataclass objects

您还可以.whl从发布部分下载该文件:

$ pip install *.whl

用法

客户

为了将学术 PDF 转换为 TEI XML 文件,我们使用了 GROBID 的 REST 服务。特别是processFulltextDocument端点。

from pathlib import Path
from grobid.models.form import Form, File
from grobid.models.response import Response

pdf_file = Path("<your-academic-article>.pdf")
with open(pdf_file, "rb") as file:
    form = Form(
        file=File(
            payload=file.read(),
            file_name=pdf_file.name,
            mime_type="application/pdf",
        )
    )
    c = Client(base_url="<base-url>", form=form)
    try:
        xml_content = c.sync_request().content  # TEI XML file in bytes
    except GrobidClientError as e:
        print(e)

base-urlGROBID REST 服务的 URL 在哪里

你可以https://cloud.science-miner.com/grobid/用来测试

形式

该类Form支持 processFulltextDocument 端点的大多数可选参数。

解析器

如果要序列化 ​​XML 内容,我们可以使用Parser类来创建dataclasses 对象。

并非所有 GROBID 注释指南都得到满足,但合规性是一个目标。见#1

from grobid.tei import Parser

xml_content: bytes
parser = Parser(xml_content)
article = parser.parse()
article.to_json()  # raises RuntimeError if extra require 'json' not installed

在哪里与客户端部分xml_content相同

或者,您可以从文件加载 XML:

from grobid.tei import Parser

with open("<your-academic-article>.xml", "rb") as xml_file:
  xml_content = xml_file.read()
  parser = Parser(xml_content)
  article = parser.parse()
  article.to_json()  # throws RuntimeError if extra require 'json' not installed

我们使用orjson提供一种to_json将数据类序列化为 JSON 的方法。默认情况下,没有安装 orjson,使用 pip install grobid[json].

执照

麻省理工学院

贡献

欢迎您通过提交 PR 添加缺少的功能,但是,除了 GROBID 注释合规性之外,我不会接受任何请求。

免责声明

这个模块最初是一个大学小组项目的一部分,但是,所有的代码和测试也是由我编写的。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

grobid-0.2.0.tar.gz (17.2 kB 查看哈希)

已上传 source

内置分布

grobid-0.2.0-py3-none-any.whl (12.8 kB 查看哈希)

已上传 py3