文档图片识别(PDF识别)
SimpleTex文档图片识别目前支持识别中英两种语言的识别,是目前公式图表增强模式下使用的PDF文件识别的OCR接口 【注意:该接口可能随时进行变动,目前仅供测试参考使用】
调用方法
轻量模型接口地址:https://server.simpletex.cn/api/doc_ocr
模型版本:
SimpleTex Doc OCR V1
接口方法:
POST
请求参数:
Header
:鉴权参数(UAT或APP信息)Body
:Multipart/form-data
其他说明:目前该接口仅支持一次上传一个文件,不支持批量调用。
参数详解
参数名 | 参数类型 | 必填 | 说明 | 示例 |
---|---|---|---|---|
file | 文件 | 是 | 合法的PDF页的图片二进制文件信息,包括png/jpg等格式,无法开启批量调用,仅支持一次上传一张图片 | / |
inline_formula_wrapper | 字符串形式Json列表 | 否 | 用于修改行内公式在markdown中的包裹符号。以Json形式填入,如果格式错误将使用默认的包裹符号 | ["$","$"] |
isolated_formula_wrapper | 字符串形式Json列表 | 否 | 用于修改独立行公式在markdown中的包裹符号。以Json形式填入,如果格式错误将使用默认的包裹符号 | ["$$","$$"] |
价格
月调用量(次) | 价格(元/页) |
---|---|
<1000 | 免费 |
1000+ | 0.02 |
并发限制量 | 默认调用免费量 |
---|---|
请求处理并发量 | 1 |
普通请求QPS | 1 |
返回信息示例
上传单个文件
{ "status": true, // 是否成功调用接口 "res": { // 调用结果 "content": "...", // Markdown信息 }, "request_id": "tr_16755479007123063412063155819" // 请求ID }
示例代码
下列代码可以用于将PDF文件转换为Markdown文件,其中使用了PyMuPDF库进行PDF文件的读取,使用PIL库进行图片的处理,使用requests库进行文件上传,使用tqdm库进行进度条显示。
其中可以先用pip安装PyMuPDF, requests, Pillow, tqdm等库然后调用
pip install PyMuPDF requests Pillow tqdm
详细代码
import io
import fitz
from PIL import Image
import requests
from tqdm import tqdm
UAT = "xxxxx" # 用户授权令牌
def pillow_image_to_file_binary(image):
btyes_io = io.BytesIO()
image.save(btyes_io, format='PNG')
return btyes_io.getvalue()
def convert_pdf_to_images(pdf_binary, dpi=100):
doc = fitz.open("pdf", pdf_binary)
images = []
for i in range(doc.page_count):
page = doc[i]
image = page.get_pixmap(dpi=dpi)
image = Image.frombytes("RGB", [image.width, image.height], image.samples)
images.append(image)
return images
def pdf_ocr(image):
api_url = "https://server.simpletex.cn/api/doc_ocr/"
header = {"token": UAT} # 鉴权信息,此处使用UAT方式
img_file = {"file": pillow_image_to_file_binary(image)}
res = requests.post(api_url, files=img_file, data={}, headers=header).json() # 使用requests库上传文件
print(res)
return res["res"]["content"]
if __name__ == '__main__':
pdf_path = 'test.pdf' # 输入pdf文件
file_binary = open(pdf_path, 'rb').read()
images = convert_pdf_to_images(file_binary)
final_markdown_content = ""
for image in tqdm(images):
final_markdown_content += pdf_ocr(image) + "\n"
open("test.md", "w", encoding="utf-8").write(final_markdown_content)
print(final_markdown_content) # 保存并输出最终markdown文件
在未来将进一步支持PDF文件异步直接上传服务。目前测试期间每天自动领取1000次免费识别