精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

青青草原国产免费| 国产一区二区丝袜高跟鞋图片| 色哟哟免费视频| hd国产人妖ts另类视频| 97久久人人超碰| 人体精品一二三区| 欧日韩不卡视频| 国产96在线亚洲| 在线观看不卡一区| 国产一区 在线播放| 日韩精品123| 精品写真视频在线观看| 午夜精品久久久久久久久久久久久| 成人精品999| 久久在线观看| 一本色道久久综合亚洲91| 欧美亚洲视频一区| 免费在线黄色网址| 国产精品一区二区久久不卡 | 国产亚洲欧美另类一区二区三区| 精人妻无码一区二区三区| 亚洲中无吗在线| 亚洲欧洲国产一区| 免费观看污网站| 亚洲tv在线| 日本精品一区二区三区高清| 97干在线视频| 黄色网页网址在线免费| 久久久噜噜噜久噜久久综合| www.成人av| 国产一区二区视频免费观看| 久久精品主播| 亚洲 日韩 国产第一| 男人的午夜天堂| 欧美日韩国产高清电影| 日韩成人高清在线| 精品少妇人妻av一区二区三区| 丰满少妇一区| 欧美在线观看视频一区二区三区 | 一级黄色毛毛片| 精品无人区一区二区| 日韩精品中文字幕在线不卡尤物| 中文字幕免费高清在线| 国产v综合v| 色综合久久久久综合体桃花网| 久久这里只有精品18| 欧美69xxxx| 国产精品久久久久久久浪潮网站| 精品999在线观看| 国精品人妻无码一区二区三区喝尿| 狠狠色综合日日| 国产日韩中文字幕在线| 中文字幕黄色av| 免费在线观看不卡| 国产精品劲爆视频| 日本熟妇一区二区三区| 老牛嫩草一区二区三区日本| 欧日韩在线观看| 国产嫩bbwbbw高潮| 久久精品午夜| 国产精品久久久久久久久久久不卡 | 一道在线中文一区二区三区| 精品呦交小u女在线| 在线观看国产网站| 亚洲专区视频| 国产亚洲在线播放| 99国产精品无码| 99精品国产一区二区三区| 日韩综合中文字幕| 日韩a级片在线观看| 午夜久久美女| 97久久精品人人澡人人爽缅北| 日本一二三区视频| 另类av一区二区| 国产精品久久精品| 91麻豆国产在线| 国产精品123| 黑人另类av| 国产一级片在线播放| 国产精品国产三级国产aⅴ原创| 日本一区二区免费高清视频| 黄色网页在线播放| 午夜不卡在线视频| 日韩视频在线免费看| 国产91精品在线| 日韩一区二区影院| 男女一区二区三区| 国产亚洲第一伦理第一区| 少妇激情综合网| 久久久精品国产sm调教| 亚洲影院一区| 成人在线精品视频| 高清国产mv在线观看| 久久久www成人免费无遮挡大片| 天堂精品一区二区三区| 91国内在线| 欧美午夜宅男影院在线观看| 午夜免费看视频| 国产图片一区| 综合国产在线观看| 日本亚洲欧美在线| 看片的网站亚洲| 黄色小网站91| 精品国产丝袜高跟鞋| 天天免费综合色| 波多野结衣国产精品| 成人香蕉社区| 久久激情视频免费观看| 成年人午夜视频| 久久精品国产精品青草| 久久99精品久久久久久久久久| 色综合久久影院| 色诱视频网站一区| 国产精品91av| 久久中文视频| 欧美资源在线观看| 亚洲黄色精品视频| 中文成人综合网| 日韩精品视频久久| 国产精品对白久久久久粗| 日韩亚洲成人av在线| 18精品爽视频在线观看| 麻豆高清免费国产一区| 欧美精品与人动性物交免费看| 色呦呦网站在线观看| 欧美日韩日本视频| 成都免费高清电影| 91久久综合| 99在线影院| 久草免费在线观看| 欧美在线看片a免费观看| 特级西西人体4444xxxx| 欧美freesex交免费视频| 国产美女扒开尿口久久久| 日本天堂在线| 午夜视频久久久久久| 手机看片国产精品| 97精品在线| 国产欧美日韩视频| 第一福利在线| 91国产视频在线观看| 老鸭窝一区二区| 一本色道久久精品| 国产一区二区视频在线免费观看| 羞羞视频在线观看不卡| 欧美一区三区二区| 视频国产一区二区| 久久99国产精品久久99果冻传媒| 五月天久久综合网| www.一区| 俺去了亚洲欧美日韩| 一级成人免费视频| 亚洲欧洲国产日本综合| jizzzz日本| 99久久99久久精品国产片桃花| 国产精品一区二区电影| 在线视频1区2区| 欧美福利视频一区| 亚洲少妇xxx| 国产一区二区三区在线观看免费视频 | 国产精品青草综合久久久久99| 热久久精品国产| 经典一区二区| 国产精品久久久久久久电影| 成人动漫在线播放| 欧美性高清videossexo| 亚洲精品天堂网| 国产一区二区美女| 99re6这里有精品热视频| 久久99成人| 欧美国产在线电影| 欧美在线 | 亚洲| 欧美午夜久久久| 特黄一区二区三区| 国产成人精品免费一区二区| 青娱乐自拍偷拍| 欧美精品羞羞答答| 成人黄色短视频在线观看| 色www永久免费视频首页在线| 欧美xxxxx牲另类人与| 久久免费激情视频| 亚洲国产成人一区二区三区| 最新免费av网址| 亚洲精品免费观看| 日韩欧美国产二区| 国产情侣一区在线| 97香蕉超级碰碰久久免费软件| 免费在线视频你懂得| 制服丝袜中文字幕亚洲| 国产精选第一页| 久久久久久久久久久久久久久99| 国产福利在线免费| 亚洲国产专区校园欧美| 欧美在线激情| 久久综合给合| 国产精品高潮在线| 欧美另类tv| 中文国产成人精品久久一| 成人免费视频国产免费麻豆| 91国偷自产一区二区使用方法| 欧美日韩在线视频免费| 久久亚洲精品小早川怜子| 91国内在线播放| 久久国产日本精品| 神马午夜伦理影院| 欧美日韩国产免费观看视频| 成人欧美一区二区| 久久er热在这里只有精品66| 91精品国产91久久久| 老司机在线看片网av| 亚洲欧美资源在线| 六月丁香综合网| 91麻豆精品国产自产在线观看一区 | 日韩一区二区三区免费播放| 国产精品久久亚洲| 日韩一级视频| 国产精品久久久久久久美男| av色在线观看| 欧美剧在线观看| h视频网站在线观看| 亚洲国产精品成人va在线观看| 国产精品久久久久久久免费| 一本到高清视频免费精品| 国产一级片视频| 亚洲欧美日韩国产另类专区| 性欧美一区二区| 91在线观看视频| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 国产精品中文| 国产精品久久久久久久久久三级| 国产盗摄一区二区| 久久福利网址导航| 欧美成人性生活视频| 亚洲香蕉av在线一区二区三区| 天天干,夜夜爽| 精品国产91九色蝌蚪| 国产欧美久久久精品免费| 欧美亚洲综合另类| 无码人妻丰满熟妇区bbbbxxxx| 婷婷开心久久网| 亚欧视频在线观看| 性做久久久久久久免费看| 麻豆成人在线视频| 亚洲精品国产视频| 欧美成人精品欧美一级私黄| 亚洲美女屁股眼交3| 黄色一级大片在线免费观看| 中文字幕在线一区| 欧美a级片免费看| 国产精品欧美经典| 亚洲欧洲综合网| 一区在线观看免费| 老熟妇高潮一区二区三区| 中文字幕精品一区二区三区精品 | 欧美日韩国产在线观看网站 | 精品影院一区| 国产亚洲激情在线| 国产无套粉嫩白浆在线2022年 | 国产精品第七页| 91污在线观看| 国产手机在线观看| 国产精品女同一区二区三区| 无码人妻精品中文字幕 | 日韩精品免费在线观看| 日韩三级电影网| 亚洲三级av在线| jizzjizz在线观看| 久久色在线播放| 色老头在线观看| 亚洲2020天天堂在线观看| 无码小电影在线观看网站免费| 日韩av电影国产| 成人做爰视频www| 91久久夜色精品国产网站| 日韩三级av高清片| 国产亚洲精品自在久久| 国产不卡一区| 中文字幕一区综合| 国产一区二区中文| 国产又黄又大又粗视频| 日韩精品91亚洲二区在线观看| 日韩av卡一卡二| 成人91在线观看| 中国女人特级毛片| 亚洲人123区| 日韩精品视频免费看| 在线观看网站黄不卡| 99久久亚洲精品日本无码| 亚洲电影免费观看高清| 国家队第一季免费高清在线观看| 久久久精品国产一区二区| 免费在线看污片| 国产精品久久久久久久7电影| 久久综合给合| 日韩av在线一区二区三区| 91高清一区| 成年人免费在线播放| 国产一区二区三区免费播放 | 欧美变态网站| 在线观看欧美激情| 中文欧美日韩| 人妻换人妻仑乱| 国产午夜精品福利| 免费中文字幕在线观看| 在线观看国产一区二区| 国产 欧美 精品| 日韩中文字幕精品视频| 欧美激情网站| 99精品国产高清在线观看| av在线不卡顿| jizzjizzxxxx| 国产成人99久久亚洲综合精品| www.99热| 色综合网色综合| 亚洲黄色a级片| 久久成人一区二区| 日本成人伦理电影| 国产区日韩欧美| 亚洲国产精品综合久久久| 国产一级不卡毛片| 99精品久久99久久久久| 天天看片中文字幕| 欧美日韩亚州综合| 日本福利午夜视频在线| 欧美激情va永久在线播放| 亚洲二区av| 在线观看日韩羞羞视频| 可以免费看不卡的av网站| 国产精品麻豆入口| 亚洲综合男人的天堂| 国产伦精品一区二区三区视频痴汉| 亚洲偷熟乱区亚洲香蕉av| 91av久久| 国产精品国产精品| 亚洲无线视频| 91人人澡人人爽| 一区二区在线观看视频| 91精东传媒理伦片在线观看| 夜夜嗨av一区二区三区免费区 | 欧美精品观看| 樱花草www在线| 中文字幕一区二区三区不卡 | 蜜臀av一级做a爰片久久| 伊人网在线视频观看| 狠狠躁18三区二区一区| 三级小视频在线观看| 国内精品久久影院| 精品国产18久久久久久洗澡| 日本a在线免费观看| 9色porny自拍视频一区二区| 国产主播在线观看| 亚洲第一天堂av| 蜜桃麻豆影像在线观看| 精品一区国产| 久久福利精品| 欧洲美熟女乱又伦| 欧美性极品少妇| 国产在线更新| 成人免费在线看片| 亚洲美女啪啪| 人妻av无码一区二区三区| 欧美亚洲日本国产| 欧美成人精品一区二区男人看| 亚洲精品欧美日韩专区| 国产精品99一区二区| 午夜av免费看| 在线观看91精品国产入口| 免费a级在线播放| 91欧美精品午夜性色福利在线| 欧美激情第8页| 视频免费在线观看| 一本色道**综合亚洲精品蜜桃冫 | 久久免费美女视频| 国产一级精品毛片| 久久久国产精品亚洲一区| 日韩视频在线直播| 国产av麻豆mag剧集| 国产亚洲综合色| 国产乱叫456在线| 国语自产精品视频在线看一大j8| 免费成人av| 日韩视频在线观看一区二区三区| 亚洲自拍偷拍av| 美女欧美视频在线观看免费| 国产色婷婷国产综合在线理论片a| 欧美性久久久| 黄色三级生活片| 日韩亚洲国产中文字幕欧美| 制服丝袜专区在线| 一区二区三区我不卡| 成人成人成人在线视频| jizz国产在线| 欧美福利视频在线观看| 欧美男gay| 亚洲熟女乱综合一区二区| 日韩欧美精品免费在线| 国产黄色在线网站| 欧美一区二区综合| 国产成人av电影免费在线观看| 国内av在线播放|