![]()
全球PyPI倉庫里有超過47萬個Python包,但英國會計從業者找了7年,沒找到一份能直接調用的標準科目表。
這是開發者 Matt 在 GitHub 上寫下的原話。他在給英國客戶做AI記賬工具時,發現所有現成的會計庫都是美國標準——GAAP(美國公認會計原則)的科目分類、美國的稅務代碼、美國的增值稅邏輯。英國特有的VAT(增值稅)處理、HMRC(英國稅務海關總署)申報表單映射,全得自己手工維護。
于是他花了一個周末,把英國標準的166個 nominal codes(名義科目代碼)寫成了一個零依賴的純Python庫:uk-chart-of-accounts。
為什么美國代碼在英國會"水土不服"
英美會計體系的差異,比英鎊和美元的匯率更難換算。
美國會計軟件通常把"租金"歸為一類,但英國VAT規定:住宅租金零稅率,商業租金標準稅率20%。混在一起,季度申報時直接報錯。更隱蔽的是"業務招待費"——英國VAT完全禁止抵扣進項稅,企業所得稅還要做納稅調增。美國開發者沒經歷過CT600(英國公司稅申報表)的折磨,根本想不到這一層。
Matt 在文檔里舉了個例子:代碼7403"業務招待費"的元數據里,直接嵌入了 HMRC VAT Notice 700/65 的引用,以及 CT600 Box 46 的填報指引。
這不是注釋,是機器可讀的字段。
調用 `coa.get(7403).hmrc_box` 返回字符串 `"CT600 Box 46"`,調用 `.description` 拿到完整的稅務處理說明。做自動化報表時,不再需要硬編碼映射表。
給AI記賬工具做的" prompt 外掛"
這個庫最討巧的設計,是 `to_prompt_context()` 方法。
現在所有人都在做大模型+記賬,但有個臟活躲不掉:怎么讓模型知道"TESCO 15.40 GBP"該進哪個科目?常規做法是維護一套 prompt 模板,把科目表貼進去。科目表更新了,模板得跟著改,版本管理噩夢。
Matt 的做法是把整個科目表序列化成結構化文本,按賬戶類型過濾,直接注入 prompt:
```pythoncontext = coa.to_prompt_context(types=[AccountType.OVERHEAD])prompt = f"""Given this chart of accounts:{context}Categorise this transaction: "TESCO 15.40 GBP""""
模型拿到的是帶VAT稅率、帶HMRC表單映射的完整上下文,不是光禿禿的科目名稱。Matt 說這是他從一個更大的記賬自動化項目里拆出來的"參考數據層"——原本只是內部工具,發現社區確實需要,才單獨開源。
166個代碼背后的合規細節
英國標準科目表的范圍從1000(固定資產)到9999(系統賬戶),Matt 覆蓋了完整的166個常用代碼。每個代碼包含6個字段:名稱、VAT稅率(標準/減免/零稅率/豁免)、稅率百分比、借方增減方向、HMRC表單映射、業務標簽。
標簽系統做得細。"motor"標簽能撈出所有車輛相關費用——燃油、保險、維修、路稅,方便做福利車(company car)的稅務調整。按VAT稅率篩選,能一鍵分離可抵扣和不可抵扣進項。
最枯燥的部分是 HMRC 映射。CT600的86個格子、VAT Return的9個盒子、FPS/RTI(實時報稅)、EPS(雇主支付摘要)、CIS(建筑業方案),每個代碼該進哪個格子,全寫進了元數據。做電子申報時,直接讀字段生成XML,不用再查 HMRC 的PDF手冊。
零依賴、純Python、3.10+支持。安裝命令就一行:`pip install uk-chart-of-accounts`。
GitHub 倉庫的星標數還沒破百,但 Matt 說已經收到四大會計師事務所的私信——不是要用,是想確認"這個映射關系你們從哪驗證的"。他貼出了 HMRC 官方科目表指南和 VAT Notice 的交叉引用鏈接。
開源社區有個經典悖論:最該被標準化基礎設施,往往因為"太基礎"而沒人愿意維護。美國有 FASB(財務會計準則委員會)背書的 XBRL 分類標準,Python 生態里對應庫一抓一把。英國 HMRC 只發PDF和Excel,開發者各自為戰,重復造輪子造了七年。
Matt 的166行代碼(實際代碼量)算不上一場革命,但它把"查PDF-手工錄入-祈禱別報錯"的循環,變成了 `pip install` 之后的三行調用。對于每年要處理超過500萬份CT600申報的英國中小企業來說,這個差距可能就是自動化和手工賬的分水嶺。
下一個被補上的缺口會是什么?澳大利亞的GST科目表,還是印度的GST州際映射?有人在 Matt 的 issue 區留言:加拿大T2申報表的科目映射,我周末也寫一個。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.