本文用于明年继续处理上海中考 1-15志愿 分数线时快速上手。
kylx365_db.MPS_ScoreScoreYear = 2026ScoreType = 1-15志愿DistrictID、SchoolTarget、SchoolFullName、SchoolTargetRemark、PlanNum、ScoreTotal、Score1、Score2、Score3、Score4、ScoreTotalDifferenceValue源文件目录:
/Volumes/程杰外接SD盘/上海中考招生计划/2026/分数线/1-15志愿
计划文件目录:
/Volumes/程杰外接SD盘/上海中考招生计划/2026/计划/1-15志愿
工作目录:
/Users/chengjie/Documents/git/miaoguo_system_server/秒过分数线数据导入
import_mps_score_1_15_batch_from_json_2026.js
import_mps_score_1_15_xuhui_scores_2026.js
import_mps_score_1_15_baoshan_scores_2026.js
import_mps_score_1_15_pudong_scores_2026.js
audit_mps_score_1_15_2026_final.js
generate_mps_score_1_15_2026_full_review_report.js
fix_mps_score_1_15_2026_missing_plan_rows.js
ocr_image_text.swift
| 区 | 最终依据 | 说明 |
|---|---|---|
| 黄浦 | 黄浦区.pdf |
文字层 PDF,67 行;PDF 无综合测试列,Score4 保持空。 |
| 徐汇 | 徐汇区.pdf |
扫描 PDF,3 页;曾漏第 3 页,已补齐 68 行。 |
| 长宁 | 长宁区.pdf |
文字层 PDF,57 行;库内另有新纪元计划行,源 PDF 未列,保留 0 分。 |
| 静安 | 静安区-本区.pdf + 静安区-外区.pdf |
源有宋庆龄、博华、新纪元 3 行库无;已查计划图 静安区2.png 未见,不补库,列入源/计划不一致复查。库有新和停招,按停招保留。 |
| 普陀 | 普陀区.pdf |
文字层 PDF,68 行。 |
| 虹口 | 虹口区.mhtml |
MHTML 表格,使用简称映射到数据库全称,50 行。 |
| 杨浦 | 杨浦区.html |
源有 复旦大学第二附属中学,已查 杨浦区1.png + 杨浦区2.png 未见计划,不补库,列入源/计划不一致复查。 |
| 闵行 | 闵行区.pdf |
文字层 PDF,80 行;5 行只公布总分。 |
| 宝山 | 宝山区.pdf |
PDF 2 页,59 行;17 行只公布总分。 |
| 嘉定 | 嘉定区.pdf |
文字层 PDF,54 行;33 行只公布总分。 |
| 浦东 | 浦东新区.pdf |
PDF 3 页,106 源行;库内另有川沙中学北校,源未列,保留 0 分。 |
| 金山 | 金山区.pdf |
源 40 行,库 42 行;2 条库有源无,列入复查。 |
| 松江 | 松江区.mhtml |
源 58 行,匹配 56;计划图确认上海创艺高级中学有 2 个计划,已补入数据库 ID 40207。宝山世外、远东在计划图未见,不补库;5 条库有源无按未投档保留。 |
| 青浦 | 青浦区.html |
HTML 54 行;当前 HTML 已复核,changed_rows=0。 |
| 奉贤 | 奉贤区.html |
HTML 46 行。 |
| 崇明 | 崇明区1.jpeg |
JPEG 单图,29 行;低分段已人工视觉确认。 |
ScoreTotal 为录取最低分。Score1 为语数外总分。Score2 为数学。Score3 为语文。Score4 为综合测试。ScoreTotal,Score1 到 Score4 留空。/、无考生达线、线上无人投档、控分线上无考生录取时:录入 ScoreTotal = 0,分项通常为 0。Score4 留空。ScoreTotalDifferenceValue 用当前总分减上一年同 key 总分;无考生/0 分行建议保持空,避免出现误导性的负差。SELECT DistrictID, COUNT(*), SUM(PlanNum)
FROM MPS_Score
WHERE ScoreYear = 2026 AND ScoreType = '1-15志愿'
GROUP BY DistrictID
ORDER BY DistrictID;
pdfplumber.extract_tables()。<table>。pdftoppm 渲染,再用 Vision OCR 和人工视觉核对。schoolName、scoreTotal、score1、score2、score3、score4、officialRemark。node import_mps_score_1_15_batch_from_json_2026.js --input=输入.json --dry-run
确认 problem_rows 和 not_in_source_rows:
not_in_source_rows:库有计划、分数线源未列,通常是未投档,保留。problem_rows / missing_current_row:先查计划目录。计划图有则补库,计划图未见则记报告。正式导入:
node import_mps_score_1_15_batch_from_json_2026.js --input=输入.json
node generate_mps_score_1_15_2026_full_review_report.js
node audit_mps_score_1_15_2026_final.js
node generate_mps_score_1_15_2026_full_review_report.js
SchoolTargetRemark,例如艺术班、英语等。59、崇明民一数学 40 都是真值。/ 和 未录满 不总是等于 0;有些区会写总分 501 且无分项,这应作为总分-only,而不是 0。最终详细清单见:
mps_score_1_15_2026_full_review_report.jsonmps_score_1_15_2026_full_review_report.mdmps_score_1_15_2026_sample_audit_report.jsonmps_score_1_15_2026_sample_audit_report.md重点仍是源文件和计划文件不一致。库有源无按未投档保留,不再作为错误:
复旦大学第二附属中学,计划图未见,库无。*backup*.json、tmp/、tmp_*.png、tmp_*.json、__pycache__/。