我正在尝试将curl
脚本转换为在Python中将grobid
服务器上的pdf文件解析为requests
。
基本上,如果我按如下方式运行grobid
服务器,
./gradlew run
我可以使用以下curl
来获取学术论文example.pdf
的解析XML输出,如下所示
curl -v --form input=@example.pdf localhost:8070/api/processHeaderDocument
但是,我不知道将此脚本转换为Python的方法。以下是我尝试使用requests
:
GROBID_URL = 'http://localhost:8070'
url = '%s/processHeaderDocument' % GROBID_URL
pdf = 'example.pdf'
xml = requests.post(url, files=[pdf]).text
答案 0 :(得分:0)
我得到了答案。基本上,我错过了api
中的GROBID_URL
,输入files
也应该是字典而不是列表。
GROBID_URL = 'http://localhost:8070'
url = '%s/api/processHeaderDocument' % GROBID_URL
pdf = 'example.pdf'
xml = requests.post(url, files={'input': open(pdf, 'rb')}).text
答案 1 :(得分:0)
这是来自 http://ceur-ws.bitplan.com/index.php/Grobid 的示例 bash 脚本。请注意,还有一个随时可用的 python 客户端可用。见https://github.com/kermitt2/grobid_client_python
#!/bin/bash
# WF 2020-08-04
# call grobid service with paper from ceur-ws
v=2644
p=44
vol=Vol-$v
pdf=paper$p.pdf
if [ ! -f $pdf ]
then
wget http://ceur-ws.org/$vol/$pdf
else
echo "paper $p from volume $v already downloaded"
fi
curl -v --form input=@./$pdf http://grobid.bitplan.com/api/processFulltextDocument > $p.tei