@customize-agent/knowledge 4.0.14 → 4.0.15
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.
- package/dist/extraction/content-extractor.d.ts +7 -3
- package/dist/extraction/content-extractor.js +214 -235
- package/dist/extraction/ocr-providers.d.ts +47 -0
- package/dist/extraction/ocr-providers.js +106 -0
- package/models/paddleocr/PP-OCRv5_mobile_det_infer.onnx +0 -0
- package/models/paddleocr/PP-OCRv5_mobile_rec_infer.onnx +0 -0
- package/models/paddleocr/ppocrv5_dict.txt +18384 -0
- package/models/tessdata/chi_sim.traineddata +0 -0
- package/models/tessdata/eng.traineddata +0 -0
- package/package.json +4 -1
- package/scripts/download-paddleocr-models.sh +63 -0
- package/scripts/render_pdf_pages.py +29 -0
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@customize-agent/knowledge",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.15",
|
|
4
4
|
"description": "Local knowledge base infrastructure for customize-agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@huggingface/transformers": "^3.8.0",
|
|
41
41
|
"@napi-rs/canvas": "^0.1.82",
|
|
42
|
+
"@tesseract.js-data/chi_sim": "^1.0.0",
|
|
42
43
|
"better-sqlite3": "^12.10.0",
|
|
43
44
|
"dwgdxf": "^2.0.1",
|
|
44
45
|
"dxf-parser": "^1.1.2",
|
|
@@ -47,6 +48,8 @@
|
|
|
47
48
|
"jszip": "^3.10.1",
|
|
48
49
|
"mammoth": "^1.12.0",
|
|
49
50
|
"node-gyp": "^12.1.0",
|
|
51
|
+
"onnxruntime-node": "^1.27.0",
|
|
52
|
+
"paddleocr": "1.2.0",
|
|
50
53
|
"pdf-parse": "^2.4.5",
|
|
51
54
|
"pdfjs-dist": "^5.4.394",
|
|
52
55
|
"sharp": "0.34.5",
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# PaddleOCR ONNX 模型下载脚本
|
|
5
|
+
# 从 Hugging Face 下载 PP-OCRv6_small 模型文件
|
|
6
|
+
#
|
|
7
|
+
# 用法:
|
|
8
|
+
# bash scripts/download-paddleocr-models.sh
|
|
9
|
+
#
|
|
10
|
+
# 环境变量:
|
|
11
|
+
# PADDLEOCR_MODEL_PATH - 模型存放目录(默认 packages/knowledge/models/paddleocr)
|
|
12
|
+
# HF_ENDPOINT - Hugging Face 镜像(默认 https://huggingface.co)
|
|
13
|
+
# 国内可用 https://hf-mirror.com
|
|
14
|
+
|
|
15
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
|
+
MODEL_DIR="${PADDLEOCR_MODEL_PATH:-$SCRIPT_DIR/../models/paddleocr}"
|
|
17
|
+
HF_BASE="${HF_ENDPOINT:-https://huggingface.co}"
|
|
18
|
+
REPO="x3zvawq/paddleocr-js-onnx"
|
|
19
|
+
|
|
20
|
+
# 模型文件列表
|
|
21
|
+
FILES=(
|
|
22
|
+
"ppocr_v6_small/PP-OCRv6_small_det_infer.onnx"
|
|
23
|
+
"ppocr_v6_small/PP-OCRv6_small_rec_infer.onnx"
|
|
24
|
+
"ppocr_v6_small/ppocrv6_dict.txt"
|
|
25
|
+
"pp_lcnet_x0_25_textline_ori/PP-LCNet_x0_25_textline_ori_infer.onnx"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
echo "==> 模型存放目录: $MODEL_DIR"
|
|
29
|
+
mkdir -p "$MODEL_DIR"
|
|
30
|
+
|
|
31
|
+
download_file() {
|
|
32
|
+
local remote_path="$1"
|
|
33
|
+
local local_name="$2"
|
|
34
|
+
local url="${HF_BASE}/${REPO}/resolve/main/${remote_path}"
|
|
35
|
+
local output="${MODEL_DIR}/${local_name}"
|
|
36
|
+
|
|
37
|
+
if [ -f "$output" ]; then
|
|
38
|
+
echo " [跳过] $local_name 已存在 ($(wc -c < "$output" | tr -d ' ') bytes)"
|
|
39
|
+
return 0
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
echo " [下载] $local_name <- $url"
|
|
43
|
+
if command -v wget &>/dev/null; then
|
|
44
|
+
wget -q --show-progress --timeout=30 -O "$output" "$url"
|
|
45
|
+
elif command -v curl &>/dev/null; then
|
|
46
|
+
curl -L --connect-timeout 30 --max-time 300 -o "$output" "$url"
|
|
47
|
+
else
|
|
48
|
+
echo "错误: 需要 wget 或 curl" >&2
|
|
49
|
+
exit 1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
echo " 完成 ($(wc -c < "$output" | tr -d ' ') bytes)"
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
echo "==> 下载 PP-OCRv6_small 模型文件..."
|
|
56
|
+
download_file "${FILES[0]}" "PP-OCRv6_small_det_infer.onnx"
|
|
57
|
+
download_file "${FILES[1]}" "PP-OCRv6_small_rec_infer.onnx"
|
|
58
|
+
download_file "${FILES[2]}" "ppocrv6_dict.txt"
|
|
59
|
+
download_file "${FILES[3]}" "PP-LCNet_x0_25_textline_ori_infer.onnx"
|
|
60
|
+
|
|
61
|
+
echo ""
|
|
62
|
+
echo "==> 下载完成!模型文件位于: $MODEL_DIR"
|
|
63
|
+
echo " PaddleOCR.js PP-OCRv6_small 模型已就绪,重启知识库索引即可使用。"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""PDF 页面渲染——用 PyMuPDF 提取高保真页面图片。
|
|
2
|
+
用法: python3 render_pdf_pages.py <pdf_path> <output_dir> [dpi=300]
|
|
3
|
+
输出: <output_dir>/page-<n>.png"""
|
|
4
|
+
import sys, os
|
|
5
|
+
import fitz
|
|
6
|
+
|
|
7
|
+
def main():
|
|
8
|
+
if len(sys.argv) < 3:
|
|
9
|
+
sys.exit(1)
|
|
10
|
+
|
|
11
|
+
pdf_path = sys.argv[1]
|
|
12
|
+
output_dir = sys.argv[2]
|
|
13
|
+
dpi = int(sys.argv[3]) if len(sys.argv) > 3 else 300
|
|
14
|
+
|
|
15
|
+
os.makedirs(output_dir, exist_ok=True)
|
|
16
|
+
doc = fitz.open(pdf_path)
|
|
17
|
+
|
|
18
|
+
num_pages = doc.page_count
|
|
19
|
+
for i in range(num_pages):
|
|
20
|
+
pix = doc[i].get_pixmap(dpi=dpi)
|
|
21
|
+
out = os.path.join(output_dir, f"page-{i + 1}.png")
|
|
22
|
+
pix.save(out)
|
|
23
|
+
|
|
24
|
+
doc.close()
|
|
25
|
+
print(f"OK:{num_pages}")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
if __name__ == '__main__':
|
|
29
|
+
main()
|