# -*- coding: utf-8 -*-
#!/usr/bin/env python3
"""
最終修正版：清除所有亂碼字符
"""
import re

def aggressive_clean(text):
    """更積極地清除亂碼"""
    # 1. 移除控制字符
    text = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f]', '', text)
    
    # 2. 移除所有非中英文非標準標點的字符
    allowed = set(' \n\t\r，。！？；：、（）【】《》「」『』〈〉——…·"\'.,;:!?()-')
    result = []
    for char in text:
        if char in allowed or '\u4e00' <= char <= '\u9fff' or '\u3000' <= char <= '\u303f' or '\uff00' <= char <= '\uffef' or char.isalnum():
            result.append(char)
        # 其他字符直接丟棄
    text = ''.join(result)
    
    # 3. 清理多餘空格和空行
    text = re.sub(r' {2,}', ' ', text)
    text = re.sub(r'\n{3,}', '\n\n', text)
    text = re.sub(r' \n', '\n', text)
    text = re.sub(r'\n ', '\n', text)
    
    return text

def main():
    input_file = '/Users/lingochen/Desktop/ocr_fixed.txt'
    output_file = '/Users/lingochen/Desktop/ocr_final_clean.txt'
    
    with open(input_file, 'r', encoding='utf-8') as f:
        text = f.read()
    
    print(f'原始: {len(text)} 字')
    
    # 積極清除
    text = aggressive_clean(text)
    
    # 簡轉繁（常用詞）
    pairs = {
        '组织': '組織', '社会': '社會', '经济': '經濟', '技术': '技術',
        '理论': '理論', '结构': '結構', '系统': '系統', '环境': '環境',
        '权力': '權力', '决策': '決策', '战略': '戰略', '任务': '任務',
        '评估': '評估', '专业': '專業', '行为': '行為', '关系': '關係',
        '标准': '標準', '效率': '效率', '目标': '目標', '人员': '人員',
        '活动': '活動', '过程': '過程', '条件': '條件', '效果': '效果',
        '因素': '因素', '特征': '特徵', '变化': '變化', '发展': '發展',
        '影响': '影響', '企业': '企業', '生产': '生產', '市场': '市場',
        '服务': '服務', '教育': '教育', '研究': '研究', '分析': '分析',
        '方法': '方法', '问题': '問題', '部分': '部分', '不同': '不同',
        '之间': '之間', '对于': '對於', '通过': '通過', '这些': '這些',
        '进行': '進行', '需要': '需要', '认为': '認為', '指出': '指出',
        '表明': '表明', '实现': '實現', '提供': '提供', '存在': '存在',
        '产生': '產生', '采取': '採取', '建立': '建立', '提高': '提高',
        '降低': '降低', '增加': '增加', '减少': '減少', '保持': '保持',
        '维持': '維持', '获得': '獲得', '失去': '失去', '面临': '面臨',
        '应对': '應對', '适应': '適應', '协调': '協調', '合作': '合作',
        '竞争': '競爭', '依赖': '依賴', '独立': '獨立', '集中': '集中',
        '分散': '分散', '分化': '分化', '整合': '整合', '稳定': '穩定',
        '动荡': '動盪', '复杂': '複雜', '简单': '簡單', '开放': '開放',
        '封闭': '封閉', '确定': '確定', '不确定': '不確定', '理性': '理性',
        '感性': '感性', '科学': '科學', '哲学': '哲學', '政治': '政治',
        '文化': '文化', '历史': '歷史', '现代': '現代', '传统': '傳統',
        '创新': '創新', '改革': '改革', '进步': '進步', '成功': '成功',
        '失败': '失敗', '优势': '優勢', '劣势': '劣勢', '机会': '機會',
        '威胁': '威脅', '风险': '風險', '收益': '收益', '成本': '成本',
        '利润': '利潤', '投资': '投資', '融资': '融資', '财务': '財務',
        '会计': '會計', '审计': '審計', '法律': '法律', '法规': '法規',
        '制度': '制度', '政策': '政策', '计划': '計劃', '组织': '組織',
        '领导': '領導', '指挥': '指揮', '监督': '監督', '激励': '激勵',
        '考核': '考核', '薪酬': '薪酬', '福利': '福利', '培训': '培訓',
        '招聘': '招聘', '录用': '錄用', '晋升': '晉升', '退休': '退休',
        '离职': '離職', '就业': '就業', '失业': '失業', '劳动': '勞動',
        '工作': '工作', '职业': '職業', '事业': '事業', '产业': '產業',
        '行业': '行業', '部门': '部門', '单位': '單位', '机构': '機構',
        '团体': '團體', '个人': '個人', '群体': '群體', '公众': '公眾',
        '社会': '社會', '国家': '國家', '地区': '地區', '国际': '國際',
        '全球': '全球', '地方': '地方', '中央': '中央', '基层': '基層',
        '高层': '高層', '中层': '中層', '上级': '上級', '下级': '下級',
        '同级': '同級', '内部': '內部', '外部': '外部', '环境': '環境',
        '条件': '條件', '因素': '因素', '特征': '特徵', '属性': '屬性',
        '性质': '性質', '功能': '功能', '作用': '作用', '影响': '影響',
        '效果': '效果', '结果': '結果', '后果': '後果', '原因': '原因',
        '理由': '理由', '根据': '根據', '基础': '基礎', '根本': '根本',
        '本质': '本質', '现象': '現象', '事实': '事實', '情况': '情況',
        '状态': '狀態', '形式': '形式', '内容': '內容', '实质': '實質',
        '规律': '規律', '原则': '原則', '规则': '規則', '标准': '標準',
        '规范': '規範', '模式': '模式', '方式': '方式', '方法': '方法',
        '手段': '手段', '途径': '途徑', '渠道': '渠道', '工具': '工具',
        '技术': '技術', '知识': '知識', '信息': '信息', '数据': '數據',
        '资料': '資料', '文献': '文獻', '报告': '報告', '文件': '文件',
        '档案': '檔案', '记录': '記錄', '统计': '統計', '分析': '分析',
        '研究': '研究', '调查': '調查', '实验': '實驗', '测试': '測試',
        '检验': '檢驗', '验证': '驗證', '证明': '證明', '论证': '論證',
        '推理': '推理', '判断': '判斷', '决策': '決策', '选择': '選擇',
        '决定': '決定', '确定': '確定', '明确': '明確', '清楚': '清楚',
        '理解': '理解', '认识': '認識', '了解': '了解', '知道': '知道',
        '掌握': '掌握', '运用': '運用', '应用': '應用', '使用': '使用',
        '利用': '利用', '采用': '採用', '采纳': '採納', '接受': '接受',
        '拒绝': '拒絕', '反对': '反對', '支持': '支持', '赞成': '贊成',
        '同意': '同意', '批评': '批評', '表扬': '表揚', '奖励': '獎勵',
        '惩罚': '懲罰', '激励': '激勵', '鼓励': '鼓勵', '帮助': '幫助',
        '协助': '協助', '配合': '配合', '协作': '協作', '竞争': '競爭',
        '冲突': '衝突', '矛盾': '矛盾', '对立': '對立', '统一': '統一',
        '协调': '協調', '平衡': '平衡', '稳定': '穩定', '动荡': '動盪',
        '变革': '變革', '创新': '創新', '保守': '保守', '进步': '進步',
        '发展': '發展', '衰退': '衰退', '增长': '增長', '下降': '下降',
        '提高': '提高', '降低': '降低', '改善': '改善', '恶化': '惡化',
        '优化': '優化', '简化': '簡化', '复杂化': '複雜化', '标准化': '標準化',
        '规范化': '規範化', '制度化': '制度化', '系统化': '系統化', '科学化': '科學化',
        '民主化': '民主化', '法治化': '法治化', '市场化': '市場化', '国际化': '國際化',
        '全球化': '全球化', '本地化': '本地化', '网络化': '網絡化', '数字化': '數位化',
        '智能化': '智慧化', '自动化': '自動化', '信息化': '信息化', '知识化': '知識化',
        '专业化': '專業化', '职业化': '職業化', '年轻化': '年輕化', '革命化': '革命化',
        '汤普森': '湯普森', '詹姆斯': '詹姆斯', '塞尔兹尼克': '塞爾茲尼克',
        '古尔德纳': '古爾德納', '韦伯': '韋伯', '西蒙': '西蒙', '马奇': '馬奇',
        '帕森斯': '帕森斯', '劳伦斯': '勞倫斯', '罗斯奇': '羅斯奇', '菲佛': '菲佛',
        '萨兰西克': '薩蘭西克', '加尔布雷思': '加爾布雷思', '布劳': '布勞',
        '伍德沃德': '伍德沃德', '伯恩斯': '伯恩斯', '斯塔科尔': '斯塔科爾',
        '德尔菲': '德爾菲', '大丰精密': '大豐精密', '泉芳食品': '泉芳食品',
        '宏达零售': '宏達零售',
    }
    for s, t in pairs.items():
        text = text.replace(s, t)
    
    # 儲存
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(text)
    
    print(f'最終: {len(text)} 字')
    
    # 檢查亂碼
    garbled = re.findall(r'[^\u4e00-\u9fff\u3000-\u303f\uff00-\uffef\w\s.,;:!?()（）【】《》「」『』〈〉、。；：！？—…·\-\"\'"]', text)
    print(f'殘留亂碼: {len(garbled)} 個')
    
    # 核心術語
    checks = [
        ('行動中的組織', '書名'),
        ('詹姆斯', '作者'),
        ('湯普森', '作者'),
        ('組織理論', '概念'),
        ('不確定性', '概念'),
        ('理性模型', '概念'),
        ('任務環境', '概念'),
        ('技術理性', '概念'),
        ('開放系統', '概念'),
        ('封閉系統', '概念'),
        ('自然系統', '概念'),
    ]
    for term, desc in checks:
        count = text.count(term)
        print(f'  {desc}「{term}」：{count} 次')

if __name__ == '__main__':
    main()
