feat: export core Hermes skills
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# 统一社会信用代码 OCR 核实配方
|
||||
|
||||
## 适用场景
|
||||
合同首页甲乙方统一社会信用代码 OCR 乱码(如 "MA INAEBX26" 应为 "MA1NAEBX26"),需要核实正确值。
|
||||
|
||||
## 核实步骤
|
||||
|
||||
### 1. tesseract 重读首页
|
||||
```bash
|
||||
# 渲染首页 200 DPI
|
||||
python3 -c "
|
||||
import fitz
|
||||
doc = fitz.open('合同.pdf')
|
||||
page = doc[0]
|
||||
mat = fitz.Matrix(200/72, 200/72)
|
||||
pix = page.get_pixmap(matrix=mat)
|
||||
pix.save('page1.png')
|
||||
"
|
||||
|
||||
# 裁剪公司名+信用代码区域(通常页面 15-30% 高度)
|
||||
python3 -c "
|
||||
from PIL import Image
|
||||
img = Image.open('page1.png')
|
||||
w, h = img.size
|
||||
crop = img.crop((0, int(h*0.15), w, int(h*0.30)))
|
||||
crop.save('page1_credit.jpg', 'JPEG', quality=75)
|
||||
"
|
||||
|
||||
# tesseract 读取
|
||||
tesseract page1_credit.jpg stdout -l chi_sim+eng --psm 6
|
||||
```
|
||||
|
||||
### 2. 企查查 web 搜索交叉验证
|
||||
```
|
||||
web_search: "公司全称" 统一社会信用代码 企查查
|
||||
```
|
||||
企查查结果通常直接显示完整 18 位信用代码。
|
||||
|
||||
### 3. 校验位验证(Python)
|
||||
统一社会信用代码第 18 位是校验位,可用以下脚本验证:
|
||||
```python
|
||||
def verify_credit_code(code):
|
||||
if len(code) != 18:
|
||||
return False
|
||||
weights = [1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28]
|
||||
chars = '0123456789ABCDEFGHJKLMNPQRTUWXY'
|
||||
code_map = {c:i for i,c in enumerate(chars)}
|
||||
total = sum(code_map[code[i]] * weights[i] for i in range(17))
|
||||
check = 31 - (total % 31)
|
||||
if check == 31: check = 0
|
||||
expected = chars[check] if check < len(chars) else '?'
|
||||
return expected == code[17], expected, code[17]
|
||||
```
|
||||
|
||||
## OCR 常见误识模式
|
||||
- `MA1NAEBX26` → `MA INAEBX26`(数字0被识别为空格)
|
||||
- `MADQRFT66P` → `MADQRFT66P`(通常正确,但需验证末位校验位)
|
||||
- 数字 `0` 和字母 `O` 混淆
|
||||
- 数字 `1` 和字母 `I` 混淆
|
||||
|
||||
## 判据
|
||||
- tesseract 重读结果与企查查一致 → 采用
|
||||
- tesseract 重读结果与企查查不一致 → 以企查查为准(企查查是权威工商数据源)
|
||||
- 校验位验证不通过 → OCR 有误,回企查查取正确值
|
||||
|
||||
## 与 OCR 完整性检查脚本的关系
|
||||
`ocr-integrity-check.py` 已修复:信用代码中的字母序列(前后有数字的)不再误报为"公司名乱码"。修复方式:检测字母序列前后是否为数字,如是则跳过。
|
||||
|
||||
## 2026-06-29 实证
|
||||
- 解放中路:甲方 "91320600MA1NAEBX26"(企查查确认)
|
||||
- 通大附:甲方 "91320600MA1NAEBX26"(企查查确认)
|
||||
- 通大附:乙方 "91320602MADQRFT66P"(校验位 P 验证通过)
|
||||
Reference in New Issue
Block a user