isbnx 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
isbnx-0.0.1/PKG-INFO ADDED
@@ -0,0 +1,312 @@
1
+ Metadata-Version: 2.3
2
+ Name: isbnx
3
+ Version: 0.0.1
4
+ Summary: 从 PDF、图片、压缩包和 EPUB 文件中提取 ISBN 号,支持 ONNX 检测和 OCR 识别
5
+ Author: zscmmm
6
+ Author-email: zscmmm <111739721+zscmmm@users.noreply.github.com>
7
+ Requires-Dist: loguru>=0.7.3
8
+ Requires-Dist: mneia-isbn>=0.0.3
9
+ Requires-Dist: opencv-python>=4.13.0.92
10
+ Requires-Dist: pillow>=12.2.0
11
+ Requires-Dist: pydantic-settings>=2.14.2
12
+ Requires-Dist: pymupdf>=1.27.2.3
13
+ Requires-Dist: pyzbar>=0.1.9
14
+ Requires-Dist: rapidocr>=3.9.0
15
+ Requires-Dist: rarfile>=4.2
16
+ Requires-Dist: onnxruntime>=1.27.0
17
+ Requires-Python: >=3.11
18
+ Project-URL: Homepage, https://github.com/zscmmm/isbnx
19
+ Project-URL: Documentation, https://isbnx.readthedocs.org
20
+ Project-URL: Repository, https://github.com/zscmmm/isbnx.git
21
+ Project-URL: Issues, https://github.com/zscmmm/isbnx/issues
22
+ Project-URL: Changelog, https://github.com/zscmmm/isbnx/blob/main/CHANGELOG.md
23
+ Description-Content-Type: text/markdown
24
+
25
+
26
+ # isbnx
27
+
28
+ > 从 PDF、图片、EPUB、MOBI 和压缩包中智能提取 ISBN 号
29
+
30
+ [![Python](https://img.shields.io/badge/python-≥3.11-blue)](https://www.python.org/)
31
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
32
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue)](https://isbnx.readthedocs.org)
33
+
34
+
35
+
36
+ ---
37
+
38
+ ## 安装
39
+
40
+ ```bash
41
+ pip install isbnx
42
+ # 或
43
+ uv add isbnx
44
+ ```
45
+
46
+ ### 系统依赖
47
+
48
+ - pyzbar, [参考安装](https://pypi.org/project/pyzbar/), 自己简单测试准确率好像比[zbarlight](https://pypi.org/project/zbarlight/)好一些,单安装依赖有点麻烦
49
+
50
+ - **win**: 需要一些c++动态库,
51
+ - **macOS**: 需要设置 `DYLD_LIBRARY_PATH` 以支持条形码解码
52
+
53
+ ```bash
54
+ echo 'export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH' >> ~/.zshrc
55
+ ```
56
+
57
+
58
+ - pdf-inspector, 可选, [参考安装](https://github.com/firecrawl/pdf-inspector), 需要配置rust,不然可能安装不成功
59
+
60
+
61
+
62
+
63
+ ---
64
+
65
+ ## 快速开始
66
+
67
+ ### 统一入口
68
+
69
+ ```python
70
+ from isbnx import extract
71
+
72
+ # 自动根据文件后缀选择提取方式
73
+ result = extract("cover.png")
74
+ if result.success:
75
+ print(result.bookinfo.isbn13) # 9787123456789
76
+ ```
77
+
78
+ ### 使用 ISBNX 类
79
+
80
+ ```python
81
+ from isbnx import ISBNX
82
+
83
+ # 从图片提取
84
+ result = ISBNX().from_image("cover.png")
85
+
86
+ # 从 PDF 提取(支持文本型和扫描件)
87
+ result = ISBNX().from_pdf("book.pdf")
88
+
89
+ # 从 EPUB 提取
90
+ result = ISBNX().from_epub("book.epub")
91
+
92
+ # 从 MOBI 提取
93
+ result = ISBNX().from_mobi("book.mobi")
94
+
95
+ # 从压缩包提取(支持 ZIP/RAR/UVZ)
96
+ result = ISBNX().from_archive("book.zip")
97
+
98
+ # 或使用统一的自动分发入口
99
+ result = ISBNX().extract("book.pdf")
100
+ ```
101
+
102
+ ---
103
+
104
+ ## 支持的文件格式
105
+
106
+ | 类型 | 后缀 | 提取策略 |
107
+ |------|------|----------|
108
+ | **图片** | `.png` `.jpg` `.jpeg` | ONNX 检测 → OCR / 条码解码 |
109
+ | **PDF** | `.pdf` | 书签定位 + 文本搜索(文本型)→ 渲染图片检测(扫描件) |
110
+ | **EPUB** | `.epub` | OPF 元数据优先 → XHTML 内容扫描 |
111
+ | **MOBI** | `.mobi` | EXTH 元数据优先 → 文本记录扫描 |
112
+ | **压缩包** | `.zip` `.rar` `.uvz` | `meta.xml` → `bookinfo.dat` → `leg001.pdg` → 兜底 PDG 图片 |
113
+
114
+ ---
115
+
116
+ ## 核心流程
117
+
118
+ ```
119
+ 输入文件
120
+
121
+
122
+ 文件类型判断 ───→ 图片 ───→ ONNX YOLO 检测 ───→ OCR / 条码解码 ───→ ISBN 提取
123
+ │ PDF ───→ 类型判断(文本/扫描)─→ 文本搜索 / 渲染检测
124
+ │ EPUB ──→ OPF 元数据 / XHTML 扫描
125
+ │ MOBI ──→ EXTH 元数据 / 文本记录扫描
126
+ │ 压缩包 ─→ meta.xml → bookinfo.dat → PDG 图片解码 → 检测
127
+
128
+
129
+ ExtractResult
130
+ ├── success: bool # 是否提取成功
131
+ ├── bookinfo.isbn13 # ISBN-13
132
+ ├── bookinfo.isbn10 # ISBN-10
133
+ ├── bookinfo.ssid # SS 号(压缩包特有)
134
+ ├── locate # 定位信息(页码、方法)
135
+ ├── ocr # OCR 原始识别文本
136
+ ├── meta # 文件元信息
137
+ └── elapsed # 耗时(秒)
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 配置
143
+
144
+ ### 严格等级
145
+
146
+ 通过 `strict` 参数控制提取结果的校验严格程度:
147
+
148
+ | 等级 | 含义 | 适用场景 |
149
+ |:----:|------|----------|
150
+ | 1 | ISBN **和** SSID 都必须存在且有效 | 最高严格 |
151
+ | 2 | ISBN 必须存在且校验通过 | 图片/PDF 检测 |
152
+ | 3 | ISBN 有效 **或** SSID 存在(默认) | 压缩包提取 |
153
+
154
+ ### 自定义配置
155
+
156
+ ```python
157
+ from isbnx import ISBNX
158
+ from isbnx.config import Settings
159
+
160
+ # 嵌套配置通过 dict 传参
161
+ config = Settings(
162
+ strict=2, # 严格等级
163
+ ocr={"ocr_model": "medium"}, # OCR 精度(small / medium)
164
+ detector={"conf_threshold": 0.5}, # ONNX 检测阈值
165
+ pdf={"front_start": 1, "back_end": 3},
166
+ )
167
+
168
+ result = ISBNX(config=config).from_image("cover.png")
169
+ ```
170
+
171
+ ### 运行时调整
172
+
173
+ ```python
174
+ from isbnx.config import configure
175
+
176
+ configure(
177
+ strict=2,
178
+ ocr={"ocr_model": "medium"},
179
+ detector={"conf_threshold": 0.5},
180
+ )
181
+ ```
182
+
183
+ ---
184
+
185
+ ## 输出模型
186
+
187
+ 所有提取结果使用 Pydantic 模型,可通过一致的接口访问:
188
+
189
+ ```python
190
+ result = ISBNX().from_image("cover.png")
191
+
192
+ # 基本状态
193
+ result.success # True / False
194
+ result.error # 失败原因(如有)
195
+
196
+ # 书籍信息
197
+ result.bookinfo.isbn # 原始 ISBN
198
+ result.bookinfo.isbn13 # ISBN-13 格式
199
+ result.bookinfo.isbn10 # ISBN-10 格式
200
+ result.bookinfo.isbn_valid # 校验是否合法
201
+ result.bookinfo.ssid # SS 号(压缩包)
202
+
203
+ # 定位信息
204
+ result.locate.page # 命中页码
205
+ result.locate.method # 定位方式(onnx / text / bookmark / ...)
206
+ result.locate.score # 检测置信度
207
+
208
+ # OCR 结果
209
+ result.ocr.lines # OCR 文本行
210
+ result.ocr.text # 全部文本(换行拼接)
211
+
212
+ # 元信息
213
+ result.meta.source # 源文件路径
214
+ result.meta.source_type # 源文件类型
215
+
216
+ # 耗时
217
+ result.elapsed # 处理耗时(秒)
218
+ ```
219
+
220
+ ---
221
+
222
+ ## 项目结构
223
+
224
+ ```
225
+ isbnx/
226
+ ├── src/
227
+ │ └── isbnx/
228
+ │ ├── __init__.py # 公开 API 入口
229
+ │ ├── isbnx.py # ISBNX 主类,统一提取接口
230
+ │ ├── config.py # Pydantic-Settings 配置管理
231
+ │ ├── models.py # Pydantic 数据模型
232
+ │ ├── detector.py # ONNX YOLO 检测器 + 检测/OCR 流水线
233
+ │ ├── pdf.py # PDF ISBN 提取
234
+ │ ├── epub.py # EPUB ISBN 提取
235
+ │ ├── mobi.py # MOBI ISBN 提取
236
+ │ ├── archive.py # 压缩包(PDG)ISBN 提取
237
+ │ ├── pdf_type.py # PDF 类型检测(文本/扫描)
238
+ │ ├── model/ # ONNX 模型文件
239
+ │ │ └── isbndetect_yolo.onnx
240
+ │ ├── ocr/ # OCR 引擎
241
+ │ │ ├── isbnx_pyzbar.py # 条形码解码
242
+ │ │ └── isbnx_rapiocr.py # RapidOCR 文字识别
243
+ │ ├── pdgview/ # PDG 图片解码器
244
+ │ └── utils/ # 工具函数
245
+ │ ├── cip_rules.py # CIP 数据提取规则
246
+ │ ├── io.py # 文件 I/O 工具
247
+ │ └── isbn_utils.py # ISBN 提取与校验
248
+ ├── tests/ # 测试用例
249
+ ├── docs/ # MkDocs 文档
250
+ ├── pyproject.toml
251
+ └── README.md
252
+ ```
253
+
254
+ ---
255
+
256
+ ## 开发
257
+
258
+ ### 环境要求
259
+
260
+ - Python ≥ 3.10, 只在 python 3.13上进行测试开发的
261
+ - [uv](https://docs.astral.sh/uv/) 包管理器
262
+
263
+ ### 本地开发
264
+
265
+ ```bash
266
+ # 克隆项目
267
+ git clone https://github.com/zscmmm/isbnx.git
268
+ cd isbnx
269
+
270
+ # 创建虚拟环境并安装依赖
271
+ uv sync --group dev
272
+
273
+ # 运行测试
274
+ uv run pytest
275
+
276
+ # 构建文档
277
+ uv run mkdocs serve
278
+ ```
279
+
280
+ ---
281
+
282
+ ## 基准测试
283
+
284
+ `isbnx` 与同类工具 `cipx` 的对比测试报告详见 [isbnx vs cipx 报告](https://isbnx.readthedocs.org/isbnx_vs_cipx_report/)。
285
+
286
+ ---
287
+
288
+ ## 路线图
289
+
290
+ - [x] 图片 ISBN 提取
291
+ - [x] PDF 提取(文本型 + 扫描件)
292
+ - [x] EPUB 提取
293
+ - [x] MOBI 提取
294
+ - [x] 压缩包(PDG)提取
295
+ - [x] ONNX YOLO 深度学习检测
296
+ - [x] 条形码解码
297
+ - [x] 文档网站(MkDocs)
298
+ - [ ] LLM 解析 CIP 字段
299
+
300
+ ---
301
+
302
+ ## 许可证
303
+
304
+ 本项目基于 MIT 许可证开源 — 详见 [LICENSE](LICENSE) 文件。
305
+
306
+ ---
307
+
308
+ ## 相关项目
309
+
310
+ - [mneia-isbn](https://pypi.org/project/mneia-isbn/) — ISBN 解析与校验库
311
+ - [pyzbar](https://pypi.org/project/pyzbar/) -条形码解析库
312
+ - [cipx](https://github.com/zscmmm/cipx) — CIP 信息提取工具
isbnx-0.0.1/README.md ADDED
@@ -0,0 +1,288 @@
1
+
2
+ # isbnx
3
+
4
+ > 从 PDF、图片、EPUB、MOBI 和压缩包中智能提取 ISBN 号
5
+
6
+ [![Python](https://img.shields.io/badge/python-≥3.11-blue)](https://www.python.org/)
7
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
8
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue)](https://isbnx.readthedocs.org)
9
+
10
+
11
+
12
+ ---
13
+
14
+ ## 安装
15
+
16
+ ```bash
17
+ pip install isbnx
18
+ # 或
19
+ uv add isbnx
20
+ ```
21
+
22
+ ### 系统依赖
23
+
24
+ - pyzbar, [参考安装](https://pypi.org/project/pyzbar/), 自己简单测试准确率好像比[zbarlight](https://pypi.org/project/zbarlight/)好一些,单安装依赖有点麻烦
25
+
26
+ - **win**: 需要一些c++动态库,
27
+ - **macOS**: 需要设置 `DYLD_LIBRARY_PATH` 以支持条形码解码
28
+
29
+ ```bash
30
+ echo 'export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH' >> ~/.zshrc
31
+ ```
32
+
33
+
34
+ - pdf-inspector, 可选, [参考安装](https://github.com/firecrawl/pdf-inspector), 需要配置rust,不然可能安装不成功
35
+
36
+
37
+
38
+
39
+ ---
40
+
41
+ ## 快速开始
42
+
43
+ ### 统一入口
44
+
45
+ ```python
46
+ from isbnx import extract
47
+
48
+ # 自动根据文件后缀选择提取方式
49
+ result = extract("cover.png")
50
+ if result.success:
51
+ print(result.bookinfo.isbn13) # 9787123456789
52
+ ```
53
+
54
+ ### 使用 ISBNX 类
55
+
56
+ ```python
57
+ from isbnx import ISBNX
58
+
59
+ # 从图片提取
60
+ result = ISBNX().from_image("cover.png")
61
+
62
+ # 从 PDF 提取(支持文本型和扫描件)
63
+ result = ISBNX().from_pdf("book.pdf")
64
+
65
+ # 从 EPUB 提取
66
+ result = ISBNX().from_epub("book.epub")
67
+
68
+ # 从 MOBI 提取
69
+ result = ISBNX().from_mobi("book.mobi")
70
+
71
+ # 从压缩包提取(支持 ZIP/RAR/UVZ)
72
+ result = ISBNX().from_archive("book.zip")
73
+
74
+ # 或使用统一的自动分发入口
75
+ result = ISBNX().extract("book.pdf")
76
+ ```
77
+
78
+ ---
79
+
80
+ ## 支持的文件格式
81
+
82
+ | 类型 | 后缀 | 提取策略 |
83
+ |------|------|----------|
84
+ | **图片** | `.png` `.jpg` `.jpeg` | ONNX 检测 → OCR / 条码解码 |
85
+ | **PDF** | `.pdf` | 书签定位 + 文本搜索(文本型)→ 渲染图片检测(扫描件) |
86
+ | **EPUB** | `.epub` | OPF 元数据优先 → XHTML 内容扫描 |
87
+ | **MOBI** | `.mobi` | EXTH 元数据优先 → 文本记录扫描 |
88
+ | **压缩包** | `.zip` `.rar` `.uvz` | `meta.xml` → `bookinfo.dat` → `leg001.pdg` → 兜底 PDG 图片 |
89
+
90
+ ---
91
+
92
+ ## 核心流程
93
+
94
+ ```
95
+ 输入文件
96
+
97
+
98
+ 文件类型判断 ───→ 图片 ───→ ONNX YOLO 检测 ───→ OCR / 条码解码 ───→ ISBN 提取
99
+ │ PDF ───→ 类型判断(文本/扫描)─→ 文本搜索 / 渲染检测
100
+ │ EPUB ──→ OPF 元数据 / XHTML 扫描
101
+ │ MOBI ──→ EXTH 元数据 / 文本记录扫描
102
+ │ 压缩包 ─→ meta.xml → bookinfo.dat → PDG 图片解码 → 检测
103
+
104
+
105
+ ExtractResult
106
+ ├── success: bool # 是否提取成功
107
+ ├── bookinfo.isbn13 # ISBN-13
108
+ ├── bookinfo.isbn10 # ISBN-10
109
+ ├── bookinfo.ssid # SS 号(压缩包特有)
110
+ ├── locate # 定位信息(页码、方法)
111
+ ├── ocr # OCR 原始识别文本
112
+ ├── meta # 文件元信息
113
+ └── elapsed # 耗时(秒)
114
+ ```
115
+
116
+ ---
117
+
118
+ ## 配置
119
+
120
+ ### 严格等级
121
+
122
+ 通过 `strict` 参数控制提取结果的校验严格程度:
123
+
124
+ | 等级 | 含义 | 适用场景 |
125
+ |:----:|------|----------|
126
+ | 1 | ISBN **和** SSID 都必须存在且有效 | 最高严格 |
127
+ | 2 | ISBN 必须存在且校验通过 | 图片/PDF 检测 |
128
+ | 3 | ISBN 有效 **或** SSID 存在(默认) | 压缩包提取 |
129
+
130
+ ### 自定义配置
131
+
132
+ ```python
133
+ from isbnx import ISBNX
134
+ from isbnx.config import Settings
135
+
136
+ # 嵌套配置通过 dict 传参
137
+ config = Settings(
138
+ strict=2, # 严格等级
139
+ ocr={"ocr_model": "medium"}, # OCR 精度(small / medium)
140
+ detector={"conf_threshold": 0.5}, # ONNX 检测阈值
141
+ pdf={"front_start": 1, "back_end": 3},
142
+ )
143
+
144
+ result = ISBNX(config=config).from_image("cover.png")
145
+ ```
146
+
147
+ ### 运行时调整
148
+
149
+ ```python
150
+ from isbnx.config import configure
151
+
152
+ configure(
153
+ strict=2,
154
+ ocr={"ocr_model": "medium"},
155
+ detector={"conf_threshold": 0.5},
156
+ )
157
+ ```
158
+
159
+ ---
160
+
161
+ ## 输出模型
162
+
163
+ 所有提取结果使用 Pydantic 模型,可通过一致的接口访问:
164
+
165
+ ```python
166
+ result = ISBNX().from_image("cover.png")
167
+
168
+ # 基本状态
169
+ result.success # True / False
170
+ result.error # 失败原因(如有)
171
+
172
+ # 书籍信息
173
+ result.bookinfo.isbn # 原始 ISBN
174
+ result.bookinfo.isbn13 # ISBN-13 格式
175
+ result.bookinfo.isbn10 # ISBN-10 格式
176
+ result.bookinfo.isbn_valid # 校验是否合法
177
+ result.bookinfo.ssid # SS 号(压缩包)
178
+
179
+ # 定位信息
180
+ result.locate.page # 命中页码
181
+ result.locate.method # 定位方式(onnx / text / bookmark / ...)
182
+ result.locate.score # 检测置信度
183
+
184
+ # OCR 结果
185
+ result.ocr.lines # OCR 文本行
186
+ result.ocr.text # 全部文本(换行拼接)
187
+
188
+ # 元信息
189
+ result.meta.source # 源文件路径
190
+ result.meta.source_type # 源文件类型
191
+
192
+ # 耗时
193
+ result.elapsed # 处理耗时(秒)
194
+ ```
195
+
196
+ ---
197
+
198
+ ## 项目结构
199
+
200
+ ```
201
+ isbnx/
202
+ ├── src/
203
+ │ └── isbnx/
204
+ │ ├── __init__.py # 公开 API 入口
205
+ │ ├── isbnx.py # ISBNX 主类,统一提取接口
206
+ │ ├── config.py # Pydantic-Settings 配置管理
207
+ │ ├── models.py # Pydantic 数据模型
208
+ │ ├── detector.py # ONNX YOLO 检测器 + 检测/OCR 流水线
209
+ │ ├── pdf.py # PDF ISBN 提取
210
+ │ ├── epub.py # EPUB ISBN 提取
211
+ │ ├── mobi.py # MOBI ISBN 提取
212
+ │ ├── archive.py # 压缩包(PDG)ISBN 提取
213
+ │ ├── pdf_type.py # PDF 类型检测(文本/扫描)
214
+ │ ├── model/ # ONNX 模型文件
215
+ │ │ └── isbndetect_yolo.onnx
216
+ │ ├── ocr/ # OCR 引擎
217
+ │ │ ├── isbnx_pyzbar.py # 条形码解码
218
+ │ │ └── isbnx_rapiocr.py # RapidOCR 文字识别
219
+ │ ├── pdgview/ # PDG 图片解码器
220
+ │ └── utils/ # 工具函数
221
+ │ ├── cip_rules.py # CIP 数据提取规则
222
+ │ ├── io.py # 文件 I/O 工具
223
+ │ └── isbn_utils.py # ISBN 提取与校验
224
+ ├── tests/ # 测试用例
225
+ ├── docs/ # MkDocs 文档
226
+ ├── pyproject.toml
227
+ └── README.md
228
+ ```
229
+
230
+ ---
231
+
232
+ ## 开发
233
+
234
+ ### 环境要求
235
+
236
+ - Python ≥ 3.10, 只在 python 3.13上进行测试开发的
237
+ - [uv](https://docs.astral.sh/uv/) 包管理器
238
+
239
+ ### 本地开发
240
+
241
+ ```bash
242
+ # 克隆项目
243
+ git clone https://github.com/zscmmm/isbnx.git
244
+ cd isbnx
245
+
246
+ # 创建虚拟环境并安装依赖
247
+ uv sync --group dev
248
+
249
+ # 运行测试
250
+ uv run pytest
251
+
252
+ # 构建文档
253
+ uv run mkdocs serve
254
+ ```
255
+
256
+ ---
257
+
258
+ ## 基准测试
259
+
260
+ `isbnx` 与同类工具 `cipx` 的对比测试报告详见 [isbnx vs cipx 报告](https://isbnx.readthedocs.org/isbnx_vs_cipx_report/)。
261
+
262
+ ---
263
+
264
+ ## 路线图
265
+
266
+ - [x] 图片 ISBN 提取
267
+ - [x] PDF 提取(文本型 + 扫描件)
268
+ - [x] EPUB 提取
269
+ - [x] MOBI 提取
270
+ - [x] 压缩包(PDG)提取
271
+ - [x] ONNX YOLO 深度学习检测
272
+ - [x] 条形码解码
273
+ - [x] 文档网站(MkDocs)
274
+ - [ ] LLM 解析 CIP 字段
275
+
276
+ ---
277
+
278
+ ## 许可证
279
+
280
+ 本项目基于 MIT 许可证开源 — 详见 [LICENSE](LICENSE) 文件。
281
+
282
+ ---
283
+
284
+ ## 相关项目
285
+
286
+ - [mneia-isbn](https://pypi.org/project/mneia-isbn/) — ISBN 解析与校验库
287
+ - [pyzbar](https://pypi.org/project/pyzbar/) -条形码解析库
288
+ - [cipx](https://github.com/zscmmm/cipx) — CIP 信息提取工具
@@ -0,0 +1,52 @@
1
+ [project]
2
+ name = "isbnx"
3
+ version = "0.0.1"
4
+ description = "从 PDF、图片、压缩包和 EPUB 文件中提取 ISBN 号,支持 ONNX 检测和 OCR 识别"
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "zscmmm", email = "111739721+zscmmm@users.noreply.github.com" }
8
+ ]
9
+ requires-python = ">=3.11"
10
+ dependencies = [
11
+ "loguru>=0.7.3",
12
+ "mneia-isbn>=0.0.3",
13
+ "opencv-python>=4.13.0.92",
14
+ "pillow>=12.2.0",
15
+ "pydantic-settings>=2.14.2",
16
+ "pymupdf>=1.27.2.3",
17
+ "pyzbar>=0.1.9",
18
+ "rapidocr>=3.9.0",
19
+ "rarfile>=4.2",
20
+ "onnxruntime>=1.27.0",
21
+ ]
22
+
23
+ [dependency-groups]
24
+ dev = [
25
+ "pdf_inspector>=0.2.0",
26
+ "mkdocs>=1.6.1,<2.0",
27
+ "mkdocs-autorefs>=1.4.1,<2.0",
28
+ "mkdocs-material>=9.6.12,<10.0",
29
+ "mkdocstrings[python]>=0.29.1,<1.0",
30
+ "pytest>=8.3.5",
31
+ ]
32
+
33
+
34
+ # [project.scripts]
35
+ # isbnx = "isbnx:main"
36
+
37
+ [build-system]
38
+ requires = ["uv_build>=0.11.24,<0.12.0"]
39
+ build-backend = "uv_build"
40
+
41
+ [[tool.uv.index]]
42
+ url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
43
+ default = true
44
+
45
+
46
+
47
+ [project.urls]
48
+ Homepage = "https://github.com/zscmmm/isbnx"
49
+ Documentation = "https://isbnx.readthedocs.org"
50
+ Repository = "https://github.com/zscmmm/isbnx.git"
51
+ Issues = "https://github.com/zscmmm/isbnx/issues"
52
+ Changelog = "https://github.com/zscmmm/isbnx/blob/main/CHANGELOG.md"
@@ -0,0 +1,20 @@
1
+ from isbnx.config import Settings, configure, settings
2
+ from isbnx.isbnx import ISBNX, extract
3
+ from isbnx.models import Detect, ExtractResult, Locate, Meta, OCRResult
4
+
5
+ __all__ = [
6
+ "Settings",
7
+ "configure",
8
+ "settings",
9
+ "ISBNX",
10
+ "extract",
11
+ "Detect",
12
+ "Locate",
13
+ "Meta",
14
+ "OCRResult",
15
+ "ExtractResult",
16
+ ]
17
+
18
+
19
+ def main() -> None:
20
+ print("Hello from isbnx!")