pdf-drawing-ocr-recognition: Pdor
定制项目,一个Python库,实现将PDF输入的指定模式的表格进行结构化读取(调用LLM OCR).
使用前准备
环境
- Windows
- Python 3.10+
依赖库
使用pip安装以下依赖库:
- simpsave
- PyPDF2
- pdf2image
- numpy
- opencv-python (cv2)
- pandas
- toml
- pyyaml
- requests
快速指南
安装
项目已经发布在PyPi上,使用pip进行安装:
pip install pdor
库的名称简写为pdor.
然后,在你的项目中导入pdor:
import pdor
环境检查
提供了一个check_env()方法检测pdor是否可用.
示例:
import pdor
status, msg = pdor.check_env()
if not status: # 如果检查不通过
for info in msg: # 逐项打印错误
print(info)
status将是一个布尔值.如果为真,则环境可用.msg是一个字符串列表,包括错误信息.
配置
Pdor的运行包含以下配置项:
max_try: LLM的最大重试次数api_url: LLM的API地址api_key: LLM的API KEYllm_model: 使用的LLM视觉模型
对于每个配置项, 提供getter和setter进行配置.
仅当通过自检时可修改配置
Pdor模式
Pdor模式定义要识别的表格结构.每个模式都是一个PdorPattern实例.
读取模式
使用pattern.load方法读取预设的模式.接受一个参数,即待读取的模式名称.
目前预设了三种模式:
700501-8615-72-12 750kV 第四串测控柜A+1端子排图左700501-8615-73-04 第四串W4Q1断路器LCP柜接线图二duanzipai
示例:
import pdor
pattern = pdor.pattern.load('700501-8615-73-04 第四串W4Q1断路器LCP柜接线图二')
可以打印Pdor模式
自行构建和保存模式
可以自行实例PdorPattern创建模式.需要以下参数:
name:str模式的名称prompt:str发送大模型的Promptdpi:intPDF转换为图片时的DPIsub_imgs:list[list[float, float, float, float]]子图列表.每个子图应该是一个表格.列表每一项都是一个由四个浮点数构成的子列表,分别对应子表位于原图的上,下,左,右百分比位置.如果子图列表为空,会自动生成一个包含整张图片的默认列表.
使用save方法进行存储.接受一个参数,即要写入的PdorPattern,名称和模式名称保持一致.
Pdor模式是只读的
Pdor单元
创建Pdor单元的实例以进行OCR解析.
实例化Pdor需要两个参数:
- 构造的PDF文件路径
- 构造的Pdor模式
可以打印Pdor单元格式化显示信息.Pdor单元是只读的.
调用parse()方法执行Pdor单元解析.可以通过开关print_repr关键字参数控制回显.
调用is_parsed()方法,可以判断是否已经解析.
在成功解析后,访问result属性即可获取结果.
其它可访问的属性包括:
file: 构造的PDF文件路径pattern: 构造的Pdor模式time_cost: 解析的用时
示例:
import pdor
from pdor import Pdor
# 构造单元
unit = Pdor("示例PDF.pdf", pdor.pattern.load("示例模式"))
# 打印单元信息
print(unit)
# 执行解析
unit.parse()
# 访问结果和解析耗时
print(f'结果: {unit.result}, 耗时: {unit.time_cost}')
结果
Pdor的结果存储在Pdor实例的result属性中.
仅当解析完毕后才可访问该属性.
输出结果
Pdor封装了常用的输出方式在Out类中.
支持的输出类型包括:
- PLAIN_TEXT
- MARKDOWN
- SIMPSAVE
- JSON
- YAML
- XML
- TOML
- PYTHON
默认输出为
SIMPSAVE
Out是一个静态类,其中的静态方法out()自行输出.输出在构造单元的PDF同路径同名文件下.接受三个参数:
pdor: 待输出的Pdor单元out_type: 输出的类型.封装在Out.TYPE枚举中print_repr: 开关回显(关键字参数, 缺省值为True)
示例
import pdor
... # 假设我们前面获得了一个Pdor单元unit
Pdor.Out.out(unit, Pdor.Out.TYPE.SIMPSAVE) # 输出至simpsave ini
Pdor.Out.out(unit, Pdor.Out.TYPE.HTML, print_repr=False) # 输出至网页,并关闭回显
Metadata
Release files for pdor 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pdor-0.2.0.tar.gz | 21.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pdor-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.9 kB
Release files / pdor-0.2.0.tar.gz
| Download URL | pdor-0.2.0.tar.gz |
|---|---|
| Size | 21.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
91a518b7aa209e9dbde3e7628b40a829ebdd01caf51cdcd5c459360bc27b978f
|
|
BLAKE2b-256 checksum How to use checksums |
dd1aaf7b2f2356382d9e828d054b4f05a0dca0d8d985d1b0249855d21dea4bb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.4
|
Release files / pdor-0.2.0-py3-none-any.whl
| Download URL | pdor-0.2.0-py3-none-any.whl |
|---|---|
| Size | 21.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd3e791fb660b0ad85533992c30f148799467658ab84ae02fc3c1db5dafbfd92
|
|
BLAKE2b-256 checksum How to use checksums |
e0bc998bd9ac4a829c3d10452ea6f2bc30bdd2bb0c6f5d190fabed3a2facfc03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.4
|