精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

幫財務小姐姐寫了幾個 Python 自動化腳本,結果...

開發 前端
大多數自動化項目失敗是因為他們試圖解決所有問題。相反,應該選擇一個重復出現的痛點,并且投資回報率可衡量。

某個無聊的下午,財務小姐姐找到了我,跟我說她厭倦了每周重復那些無聊的點擊操作,想要我幫忙開發一個工具,它可以:監控文件夾、從 PDF 中提取數據、豐富數據、推送報告。

我想,閑著也是閑著,就幫她這個忙吧,說不定還可以...咳咳咳

1. 我要解決的問題

大多數自動化項目失敗是因為他們試圖解決所有問題。相反,應該選擇一個重復出現的痛點,并且投資回報率可衡量。我的做法是:

痛點:

  • 客戶每天都會以分散的 PDF 格式發送發票。
  • 我手動打開它們,提取供應商、日期、金額,然后放入 excel。
  • 每天浪費約 20 分鐘。

目標:將其減少到零人力分鐘。

2. 快速 MVP — 構建文件監視器 + PDF 提取器

從小事做起:查看文件夾,檢測新的 PDF,提取文本。使用watchdogPyMuPDF(fitz)。

# file_watcher.py
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import fitz  # pymupdf

class PDFHandler(FileSystemEventHandler):
    def on_created(self, event):
        if event.src_path.lower().endswith(".pdf"):
            print(f"[+] New PDF: {event.src_path}")
            text = extract_text(event.src_path)
            print(text[:200], "...\n")  # quick preview

def extract_text(path: str) -> str:
    doc = fitz.open(path)
    pages = []
    for page in doc:
        pages.append(page.get_text())
    doc.close()
    return"\n".join(pages)

if __name__ == "__main__":
    observer = Observer()
    handler = PDFHandler()
    observer.schedule(handler, path="./inbox", recursive=False)
    observer.start()
    try:
        whileTrue:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

這個腳本已經將小姐姐每天的工作時間縮短至 5 分鐘——主要用于審查。

3. 增強提取器的魯棒性:OCR + 文本回退

部分 PDF 是掃描圖像。請添加pytesseract后備功能。

pip install pytesseract pill 
# 還必須在系統上安裝 tesseract (apt/brew/choco)
from PIL import Image
import pytesseract
import fitz

def extract_text_with_ocr(path: str) -> str:
    doc = fitz.open(path)
    aggregated = []
    for page in doc:
        text = page.get_text()
        if text.strip():
            aggregated.append(text)
        else:
            pix = page.get_pixmap(dpi=200)
            img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
            aggregated.append(pytesseract.image_to_string(img))
    doc.close()
    return"\n".join(aggregated)

這種混合方法(文本層 -> OCR)使該工具對我所見的 95% 的發票都具有可靠性。

4. 使用 OOP 構建結構——構建插件友好的管道

如果想要產品化,請將你的流程模塊化。每個步驟都是一個類:加載器 → 解析器 → 豐富器 → 接收器。這樣你就可以在不重寫代碼的情況下更換存儲(excel表格、數據庫、Webhook)。

# pipeline.py
from abc import ABC, abstractmethod
from typing import Dict

class Step(ABC):
    @abstractmethod
    def run(self, data: Dict) -> Dict:
        pass

class Loader(Step):
    def __init__(self, path): self.path = path
    def run(self, data):
        data['text'] = extract_text_with_ocr(self.path)
        return data

class Parser(Step):
    def run(self, data):
        # naive example; replace with regex or NLP later
        text = data['text']
        data['vendor'] = find_vendor(text)
        data['amount'] = find_amount(text)
        return data

class Sink(Step):
    def run(self, data):
        save_to_excel_sheet(data)
        return data

class Pipeline:
    def __init__(self, steps):
        self.steps = steps
    def execute(self, initial):
        data = initial
        for step in self.steps:
            data = step.run(data)
        return data


此模式可擴展:添加ClassifierStep語言檢測、TranslatorStep非英語文檔等。

5. 信息豐富與提取——先用正則表達式,再用機器學習

從確定性解析(正則表達式)開始。如果發票內容混亂或包含多種布局,請添加機器學習模型(或使用layout-parser)。正則表達式代碼片段示例:

import re

AMOUNT_RE = re.compile(r"(?<!\d)(?:USD|EUR|\$)?\s?([\d{1,3}(?:,\d{3})*(?:\.\d{2})?)\b")

def find_amount(text: str) -> float | None:
    m = AMOUNT_RE.search(text.replace("\n", " "))
    if m:
        s = m.group(1).replace(',', '')
        return float(s)
    return None

為了提高可靠性,請使用spacy+ 自定義 NER 或layout-parser在空間上檢測發票字段。

6. Web 自動化和抓取——Playwright 用于下載和儀表盤

當發票位于網絡儀表板后面時,使用 Playwright 自動下載。

pip install playwright
playwright install
def login_and_download(url, user, password, download_path):
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(url)
        page.fill('#username', user)
        page.fill('#password', password)
        page.click('#login')
        page.wait_for_selector('a.download')
        with page.expect_download() as download_info:
            page.click('a.download')
        download = download_info.value
        download.save_as(download_path)
        browser.close()

這使得服務可以自動收集源 PDF——如果小姐姐想運行系統每天早上獲取客戶文檔的訂閱,這一點至關重要。

7. 打包工具 — CLI 使用Typer/Click

對于分發,將功能包裝為 CLI,以便非開發客戶可以在本地運行它,或者可以在服務器上運行它。

pip install typer
import typer
from pipeline import Pipeline, Loader, Parser, Sink

app = typer.Typer()

@app.command()
def process(path: str):
    steps = [Loader(path), Parser(), Sink()]
    p = Pipeline(steps)
    p.execute({})
    typer.echo("Processed!")

if __name__ == "__main__":
    app()

構建一個setup.py/pyproject.toml并發布到 PyPI,或者打包為 wheel / Docker 鏡像。

8. 使用 worker 進行擴展:Celery + Redis(或 FastAPI + 后臺任務)

如果你想讓更多的小姐姐一起同時使用時,那么在工作隊列中運行處理工作,而不是阻止所有內容。

pip install celery redis
#tasks.py
from celery import Celery
from pipeline import Pipeline, Loader, Parser, Sink

app = Celery('tasks', broker='redis://localhost:6379/0')

@app.task
def process_file(path):
    steps = [Loader(path), Parser(), Sink()]
    Pipeline(steps).execute({})

Web 前端/API 入隊process_file.delay(path)并立即返回。工作線程負責處理并將結果推送至存儲。

9. 可觀察性和可靠性——日志、指標、可重試步驟

使用loguru+結構化日志,并導出正常運行時間、隊列長度和故障率的指標(Prometheus)。

pip install loguru
from loguru import logger
logger.add("service.log", rotation="10 MB", level="INFO")

try:
    process_file("/tmp/a.pdf")
except Exception as e:
    logger.exception("Processing failed")

工具做完了,讓財務小姐姐試用時,結果她投來了崇拜的眼神......

責任編輯:武曉燕 來源: 數據STUDIO
相關推薦

2019-09-23 10:04:26

抖音識別器Github

2021-04-14 14:28:14

Python點攢抖音

2024-05-13 16:29:56

Python自動化

2019-10-21 10:01:58

Python素描技術

2020-04-07 12:13:15

Python數據爬蟲

2020-08-24 14:16:59

數據Python存儲

2011-08-25 09:33:25

MySQL運維

2014-03-11 11:10:10

PowerShell自動化腳本

2024-11-13 13:14:38

2024-08-16 21:51:42

2024-06-21 10:46:44

2024-11-11 16:55:54

2022-02-17 13:03:28

Python腳本代碼

2025-02-07 12:58:33

python自動化腳本

2022-08-05 09:06:07

Python腳本代碼

2024-10-28 19:36:05

2022-02-09 10:04:35

財務自動化深度學習機器學習

2023-07-07 08:24:53

Python爬蟲Flask

2017-12-17 21:58:18

2011-05-31 17:35:45

測試自動化QTP
點贊
收藏

51CTO技術棧公眾號

少妇激情一区二区三区视频| 国产精品h视频| 亚洲图片在线视频| re久久精品视频| 这里只有精品视频在线观看| 97超碰在线视| 精品乱码一区二区三四区视频| 日日骚欧美日韩| 欧美噜噜久久久xxx| 欧美一区二区三区成人精品| 国产在线视频欧美一区| 精品久久久国产| 在线观看一区二区三区三州| 香蕉av一区二区三区| 麻豆91精品视频| 欧美亚洲伦理www| 超碰在线国产97| 国产成人短视频在线观看| 欧美videos大乳护士334| 成人三级视频在线播放| 日韩精品亚洲人成在线观看| 中文字幕国产一区| 国产一区二区精品免费| 97人妻人人澡人人爽人人精品 | 91在线视频免费观看| 成人黄色在线观看| japanese国产在线观看| 一区二区三区国产在线| 色综合天天综合网国产成人网| 国产又黄又粗视频| 图片婷婷一区| 精品国产乱码久久久久久闺蜜| 人人干人人干人人| 性感美女一区二区在线观看| 亚洲成人第一页| 91xxx视频| 免费在线观看av片| 国产日韩欧美精品电影三级在线| 狠狠色综合色区| www.麻豆av| 国产精品资源网| 成人夜晚看av| 92久久精品一区二区| 免费看欧美美女黄的网站| 国产成人综合亚洲| 国产嫩bbwbbw高潮| 亚洲永久字幕| 青青草一区二区| 久久黄色精品视频| 亚洲影院免费| 日本精品一区二区三区在线| av资源免费观看| 亚洲欧美日韩一区在线观看| 8050国产精品久久久久久| 成年人午夜视频| 一本色道久久综合亚洲精品高清 | 日韩精品中文字幕久久臀| 国产伦精品一区二区三区88av| 亚洲精品一二三**| 精品久久久久香蕉网| 岛国精品一区二区三区| 国产精品玖玖玖在线资源| 亚洲国语精品自产拍在线观看| 日本一级片在线播放| 日韩欧美天堂| 一本色道久久88亚洲综合88| 国产毛片欧美毛片久久久| 欧美在线免费看视频| 综合136福利视频在线| 三级黄色录像视频| 亚洲一级毛片| 国模吧一区二区| 国语对白永久免费| 蜜桃久久久久久| 成人国产精品久久久| 亚洲爆乳无码一区二区三区| 不卡在线观看av| 日本欧美色综合网站免费| 中文字幕在线播放| 亚洲精品高清在线| www国产黄色| 国产精品原创视频| 欧美白人最猛性xxxxx69交| 自拍视频一区二区| 四季av一区二区凹凸精品| 精品视频9999| 成人毛片在线播放| 韩国午夜理伦三级不卡影院| 国产精品视频在线免费观看| 黄视频在线观看免费| 亚洲欧美日韩在线播放| 国产一区二区视频播放| 99精品在免费线偷拍| 精品国产污网站| 2019男人天堂| 在线日韩中文| 国产日韩精品在线播放| 网站黄在线观看| 中文字幕色av一区二区三区| 国产午夜福利100集发布| 六九午夜精品视频| 日韩欧美电影一区| 精品成人无码一区二区三区| 国模吧视频一区| 国产精品一区二区性色av| 亚洲国产精品久久久久久6q| 国产欧美日产一区| 欧美午夜性视频| **日韩最新| 亚洲日韩中文字幕| 国产一卡二卡在线播放| 久久国产精品区| 欧美12av| 毛片在线导航| 在线播放91灌醉迷j高跟美女| 免费中文字幕av| 欧美午夜在线视频| 成人av在线网址| 黄色片在线免费观看| 亚洲成人在线观看视频| www.桃色.com| 久久国产综合| 国产97人人超碰caoprom| 后进极品白嫩翘臀在线视频| 综合自拍亚洲综合图不卡区| 日韩福利视频在线| 香蕉久久精品| 18性欧美xxxⅹ性满足| 亚洲AV无码国产精品午夜字幕 | 在线无限看免费粉色视频| 日韩电影免费观看高清完整版| 亚洲国产高清福利视频| 九九久久免费视频| 国产精品一区二区三区99| 手机看片福利永久国产日韩| 亚洲插插视频| 日韩精品在线看| 日本三级网站在线观看| 成人av在线网站| 国产精品久久久久久久乖乖| 亚洲一区 二区| 欧美福利视频网站| 亚洲第一页综合| 一区二区成人在线| 在线观看免费视频国产| 黄色av成人| 国产偷久久久精品专区| 丁香高清在线观看完整电影视频 | 日韩欧美国产一区二区| 菠萝菠萝蜜网站| 亚洲在线视频| 日韩高清国产精品| 成人在线视频免费看| 中文字幕日韩专区| 国产精品无码一区二区桃花视频| 中文字幕一区在线| 一个人看的视频www| 午夜国产一区| 粉嫩av免费一区二区三区| av丝袜在线| 亚洲精品网址在线观看| 黄色av一区二区| 中文字幕永久在线不卡| 妖精视频在线观看| 99伊人成综合| 日韩精品欧美在线| 在线高清欧美| 久久全球大尺度高清视频| 香蕉视频黄色片| 欧美性videosxxxxx| 午夜激情福利网| 丁香婷婷综合色啪| 99蜜桃臀久久久欧美精品网站| 精品国产aⅴ| 成人黄色影片在线| cao在线视频| 中文字幕国产日韩| 精品人妻少妇AV无码专区| 亚洲国产精品欧美一二99| 免费在线观看成年人视频| 蜜芽一区二区三区| 韩国无码av片在线观看网站| 日韩美女毛片| 91视频九色网站| 免费v片在线观看| 色狠狠av一区二区三区香蕉蜜桃| 性生交生活影碟片| 日本精品视频一区二区| 一起操在线播放| 26uuu国产日韩综合| 欧美性受xxxxxx黑人xyx性爽| 国产精品a久久久久| 日韩欧美精品在线不卡| 涩爱av色老久久精品偷偷鲁 | 91丨九色丨黑人外教| 亚洲成人福利在线| 在线亚洲免费| 强开小嫩苞一区二区三区网站| 婷婷激情久久| 亚洲一区中文字幕在线观看| 裤袜国产欧美精品一区| 久久99精品视频一区97| jizz在线观看视频| 日韩国产精品视频| 国产成年妇视频| 欧美午夜精品久久久久久超碰 | 一本久道久久综合婷婷鲸鱼| 一区二区三区精品国产| 西野翔中文久久精品字幕| 亚洲伊人一本大道中文字幕| 唐人社导航福利精品| 国产69精品久久久久9999| 精品176二区| 夜夜嗨av色综合久久久综合网| 日本高清视频在线| 欧美一区二区在线视频| 一区二区三区麻豆| 欧美性xxxx极品hd欧美风情| 久久精品免费在线| 一区二区在线观看免费视频播放| 欧美黄色高清视频| 久久久久久免费网| 艳妇乳肉豪妇荡乳xxx| 国产乱妇无码大片在线观看| 亚洲免费看av| 日韩成人伦理电影在线观看| www.中文字幕在线| 99国内精品| 国产va亚洲va在线va| 欧美三区视频| 激情视频小说图片| 亚洲一级毛片| 影音先锋成人资源网站| 亚洲成人最新网站| 中文字幕日韩一区二区三区| 日韩av在线播放网址| 日韩av在线一区二区三区| 神马久久一区二区三区| 欧美精品一区二区三区在线看午夜| 国产调教精品| 国产成人精品自拍| 国产精品中文字幕制服诱惑| 国产富婆一区二区三区 | 精品在线视频一区| 一区二区在线免费看| 看电视剧不卡顿的网站| 粉色视频免费看| 精彩视频一区二区三区| 国产无遮挡猛进猛出免费软件 | 1024视频在线| 色诱女教师一区二区三区| 在线视频婷婷| 日韩三级成人av网| 高潮毛片在线观看| 欧美黑人性视频| 538在线精品| 2019日本中文字幕| 亚洲第一二三四区| 91精品久久久久久综合乱菊| 成人影院网站ww555久久精品| 91久久精品国产91久久性色| 人人九九精品视频| 国产美女在线精品免费观看| 欧美91在线| 日本在线播放不卡| 我不卡神马影院| 男人添女人荫蒂免费视频| 亚洲精品三级| 狠狠热免费视频| 国产伦精品一区二区三区视频青涩| 精品国产午夜福利在线观看| 成人福利电影精品一区二区在线观看| 日韩少妇一区二区| 国产校园另类小说区| 亚洲视频重口味| 亚洲国产精品人人做人人爽| 亚洲综合久久网| 5858s免费视频成人| 好吊色视频一区二区| 国产一区二区三区视频在线观看 | 亚洲动漫第一页| 色老头在线视频| 欧美一区二区观看视频| 香港三日本三级少妇66| 日韩一区av在线| 狠狠操一区二区三区| 国产精品久久久久久久久久ktv| 91成人app| 免费电影一区| 亚洲有吗中文字幕| 国产亚洲天堂网| 国产精品综合一区二区三区| 人妻体内射精一区二区| 亚洲精品免费在线观看| 久久精品视频9| 欧美日韩三级在线| 色婷婷av一区二区三区之e本道| 国产亚洲精品久久久久久777| 黄色av免费在线| 97久久精品人人澡人人爽缅北| 欧美成人一二区| 久久资源av| 红桃视频国产一区| 最新免费av网址| 国产午夜亚洲精品理论片色戒| 欧美卡一卡二卡三| 欧美日韩在线播放| 全色精品综合影院| 欧美激情第一页xxx| 精品久久在线| 日本午夜一区二区三区| 极品中文字幕一区| www.午夜av| 中文字幕不卡在线播放| 国产精品久久久免费视频| 欧美一级二级在线观看| 成人好色电影| 人人澡人人澡人人看欧美| 91麻豆精品激情在线观看最新| 午夜欧美一区二区三区免费观看| 日韩一区二区免费看| 亚洲欧美综合视频| 亚洲激情成人在线| 国产美女三级无套内谢| 日韩在线视频观看| 成人国产精选| 青青草原成人| 新67194成人永久网站| 久久久久亚洲AV成人网人人小说| 亚洲视频资源在线| 国产又粗又猛又爽又黄视频 | 日韩—二三区免费观看av| 屁屁影院国产第一页| 亚洲成人免费看| 可以免费看毛片的网站| 欧美情侣性视频| 久久综合给合| 青青草综合视频| 国产乱码精品一区二区三区av| 夫妻性生活毛片| 欧美一级xxx| 欧美性video| 国产精品久久久对白| 国产主播一区| 午夜男人的天堂| 簧片在线免费看| aiss精品大尺度系列| 日韩精品一区二区三区电影| 九九九久久久精品| 五月婷婷综合激情网| 欧美剧情电影在线观看完整版免费励志电影 | 在线视频国产区| 99久久精品免费看国产一区二区三区 | 欧美在线一级| 国产精品12p| 成人午夜短视频| 久久久久99精品| 精品无人区太爽高潮在线播放| 精品国产免费人成网站| 欧洲成人一区二区| 免费xxxx性欧美18vr| 国产大片免费看| 精品国产区一区| 韩国美女久久| 亚洲视频电影| 国产超碰在线一区| 久久亚洲精品国产| 国产一区二区三区日韩欧美| 国产色99精品9i| 久久久久免费看黄a片app| 久久久精品tv| 国产精品无码久久av| 97在线视频精品| 日韩精品电影| 四虎成人免费视频| 日本道免费精品一区二区三区| 欧美成人二区| 狠狠色综合色区| 麻豆91在线观看| 日操夜操天天操| 中文在线不卡视频| 福利在线一区| 午夜激情在线观看视频| 亚洲精品免费在线播放| 欧美色18zzzzxxxxx| 91久久精品美女| 校园春色综合网| 全网免费在线播放视频入口| 精品调教chinesegay| 国产成年精品| 日韩毛片在线免费看| 亚洲免费高清视频在线| 欧美精品久久久久久久久久丰满| 国产日产欧美精品| 亚洲一区免费| 四虎精品免费视频| 国产一区二区美女视频| 都市激情久久| 久久久久xxxx| 色综合久久88色综合天天免费|