当前位置:首页>python>告别截图翻译:我用Python做了个实时屏幕翻译工具

告别截图翻译:我用Python做了个实时屏幕翻译工具

  • 2026-08-20 09:56:45
告别截图翻译:我用Python做了个实时屏幕翻译工具

被逼出来的需求

最近在看一份英文技术文档,PDF格式的,三百多页。不是不能读英文,是读起来慢。碰到长句子,脑子里要过一遍才能理解意思。

我用过几种办法。

浏览器插件?PDF在本地看的,用不了。

翻译软件?把整段复制粘贴进去,看完译文再回来找读到哪了,来回切窗口,效率很低。

截图翻译?截图、打开翻译APP、粘贴、等结果、切回去。看一页要操作五六次。

后来有一次,我玩一个没有汉化的游戏,菜单和对话全是英文。实在懒得一个个查字典,突然想:能不能做个工具,自动截屏、识别文字、翻译、然后显示在旁边?

花了两个晚上写出来了。虽然简陋,但真的好用。


这个工具怎么工作

三步:

  1. 截屏:用pyautogui 截取屏幕的指定区域

  2. 文字识别:用 Tesseract OCR(或 PaddleOCR)从截图里提取文字

  3. 翻译:调用翻译API把文字翻译成中文,显示在浮窗里

支持两种模式:

  • 选区模式:你框选一个区域,工具只翻译这个区域的内容

  • 全屏模式:翻译整个屏幕

翻译结果会显示在一个置顶的半透明窗口里,不遮挡原内容。


技术选型

功能选择理由
截屏pyautogui跨平台,API简单
OCRpytesseract免费,离线运行,支持多语言
翻译Google翻译(免费接口)不用注册API key
GUItkinterPython自带,够用了

为什么用pytesseract而不是PaddleOCR?因为PaddleOCR安装包太大(依赖PaddlePaddle深度学习框架),对新手不友好。pytesseract只需要装一个Tesseract引擎,轻量得多。

如果你的场景对中文识别要求很高(比如翻译的是扫描件、手写体),可以后期换成PaddleOCR,代码改动不大。


环境准备

第一步:安装Tesseract OCR引擎

Windows用户:去 https://github.com/UB-Mannheim/tesseract/wiki 下载安装包。安装时记得勾选中文语言包(chi_sim)。安装完后记住安装路径,后面要用。

Mac用户:

brew install tesseract tesseract-lang

Linux用户:

sudo apt install tesseract-ocr tesseract-ocr-chi-sim

第二步:安装Python依赖

pip install pyautogui pytesseract Pillow googletrans==4.0.0-rc1

googletrans 是Google翻译的非官方Python接口,免费,不用注册API key。4.0.0-rc1是目前稳定的版本。


完整代码

"""实时屏幕翻译工具截屏 → OCR识别 → 翻译 → 浮窗显示依赖安装:pip install pyautogui pytesseract Pillow googletrans==4.0.0-rc1注意:需要先安装 Tesseract OCR 引擎"""import pyautoguiimport pytesseractfrom PIL import ImageImageTkimport tkinter as tkfrom tkinter import ttkimport threadingimport time# ============ 配置 ============# Tesseract 安装路径(Windows用户改成你自己的路径)TESSERACT_PATH = r"C:\Program Files\Tesseract-OCR\tesseract.exe"pytesseract.pytesseract.tesseract_cmd = TESSERACT_PATH# OCR识别语言:eng 英文,chi_sim 简体中文OCR_LANG = "eng"# 翻译目标语言TARGET_LANG = "zh-cn"# 截屏刷新间隔(秒)REFRESH_INTERVAL = 3# 浮窗透明度(0.0全透明 ~ 1.0不透明)WINDOW_ALPHA = 0.85# ============ OCR 识别 ============def extract_text_from_image(image):"""从PIL Image对象中提取文字"""# 转成灰度图,提高OCR识别率gray = image.convert("L")# 二值化处理,让文字更清晰threshold = 150binary = gray.point(lambda x255if xthreshold else 0)# 使用 Tesseract 识别text = pytesseract.image_to_string(binarylang=OCR_LANG)# 清理多余的空行lines = [line.strip() for line in text.splitlines() if line.strip()]return"\n".join(lines)# ============ 翻译 ============def translate_text(texttarget_lang=TARGET_LANG):"""调用Google翻译"""if not text:return""try:from googletrans import Translatortranslator = Translator()result = translator.translate(textdest=target_lang)return result.textexcept Exception as e:return f"[翻译失败: {e}]"# ============ 截屏 ============def capture_region(region=None):"""    截取屏幕指定区域    region: (left, top, width, height) 或 None(全屏)    """screenshot = pyautogui.screenshot(region=region)return screenshot# ============ 选区功能 ============def select_region():"""    让用户用鼠标框选一个区域    返回 (x, y, width, height)    """root = tk.Tk()root.attributes("-fullscreen"True)root.attributes("-alpha"0.3)root.configure(bg="black")root.title("用鼠标框选要翻译的区域")start_x = [0]start_y = [0]rect_id = [None]canvas = tk.Canvas(rootcursor="cross"bg="black"highlightthickness=0)canvas.pack(fill=tk.BOTHexpand=True)selected = [None]def on_press(event):start_x[0] = event.xstart_y[0] = event.ydef on_drag(event):if rect_id[0]:canvas.delete(rect_id[0])rect_id[0] = canvas.create_rectangle(start_x[0], start_y[0], event.xevent.y,outline="red"width=2fill=""        )def on_release(event):x1 = min(start_x[0], event.x)y1 = min(start_y[0], event.y)x2 = max(start_x[0], event.x)y2 = max(start_y[0], event.y)selected[0] = (x1y1x2-x1y2-y1)root.destroy()canvas.bind("<ButtonPress-1>"on_press)canvas.bind("<B1-Motion>"on_drag)canvas.bind("<ButtonRelease-1>"on_release)# 提示文字canvas.create_text(root.winfo_screenwidth() //2,50,text="用鼠标框选要翻译的区域,松开鼠标确认",fill="white"font=("Arial"20),    )root.mainloop()return selected[0]# ============ 翻译浮窗 ============class TranslationOverlay:"""置顶的翻译结果浮窗"""def __init__(self):self.root = tk.Tk()self.root.title("屏幕翻译")self.root.geometry("500x400+50+50")self.root.attributes("-topmost"True)      # 始终置顶self.root.attributes("-alpha"WINDOW_ALPHA# 半透明self.root.configure(bg="#1e1e1e")# 原文区域self.source_label = tk.Label(self.root,text="原文(等待截屏...)",bg="#1e1e1e"fg="#888888",font=("Consolas"10),anchor="nw"justify="left"wraplength=460,        )self.source_label.pack(fill=tk.BOTHexpand=Truepadx=10pady=(100))# 分割线sep = ttk.Separator(self.rootorient="horizontal")sep.pack(fill=tk.Xpadx=10pady=5)# 译文区域self.target_label = tk.Label(self.root,text="译文将显示在这里",bg="#1e1e1e"fg="#d4d4d4",font=("Microsoft YaHei"12),anchor="nw"justify="left"wraplength=460,        )self.target_label.pack(fill=tk.BOTHexpand=Truepadx=10pady=(010))# 状态栏self.status_var = tk.StringVar(value="就绪")self.status_bar = tk.Label(self.root,textvariable=self.status_var,bg="#2d2d2d"fg="#888888",font=("Consolas"9),anchor="w"padx=10,        )self.status_bar.pack(fill=tk.Xside=tk.BOTTOM)# 控制按钮区btn_frame = tk.Frame(self.rootbg="#2d2d2d")btn_frame.pack(fill=tk.Xside=tk.BOTTOMpadx=10pady=5)self.is_running = Falseself.toggle_btn = tk.Button(btn_frametext="开始监控"command=self.toggle_monitor,bg="#0078d4"fg="white"relief="flat"padx=10,        )self.toggle_btn.pack(side=tk.LEFTpadx=5)self.mode_btn = tk.Button(btn_frametext="选区模式"command=self.select_mode,bg="#3c3c3c"fg="white"relief="flat"padx=10,        )self.mode_btn.pack(side=tk.LEFTpadx=5)self.refresh_btn = tk.Button(btn_frametext="立即翻译"command=self.translate_once,bg="#3c3c3c"fg="white"relief="flat"padx=10,        )self.refresh_btn.pack(side=tk.LEFTpadx=5)self.region = None# 选区,None表示全屏self.monitor_thread = Nonedef toggle_monitor(self):"""切换自动监控状态"""self.is_running = notself.is_runningif self.is_running:self.toggle_btn.config(text="停止监控"bg="#d83b01")self.status_var.set("监控中...")self.monitor_thread = threading.Thread(target=self._monitor_loopdaemon=True)self.monitor_thread.start()else:self.toggle_btn.config(text="开始监控"bg="#0078d4")self.status_var.set("已停止")def _monitor_loop(self):"""自动监控循环:定时截屏、识别、翻译"""while self.is_running:self.translate_once()time.sleep(REFRESH_INTERVAL)def translate_once(self):"""执行一次截屏→识别→翻译"""self.status_var.set("正在截屏...")self.root.update()# 截屏try:image = capture_region(self.region)except Exception as e:self.status_var.set(f"截屏失败: {e}")return# OCR识别self.status_var.set("正在识别文字...")self.root.update()source_text = extract_text_from_image(image)if not source_text:self.source_label.config(text="[未识别到文字]")self.target_label.config(text="")self.status_var.set("未识别到文字")return# 显示原文(只显示前200字符,避免太长)display_text = source_text[:200]if len(source_text>200:display_text += "..."self.source_label.config(text=display_text)# 翻译self.status_var.set("正在翻译...")self.root.update()translated = translate_text(source_text)self.target_label.config(text=translated)word_count = len(source_text.split())self.status_var.set(f"完成 · 识别 {word_count} 个词")def select_mode(self):"""切换到选区模式"""# 先隐藏浮窗,避免截屏时把自己截进去self.root.withdraw()time.sleep(0.3)region = select_region()if region:self.region = regionself.mode_btn.config(text=f"选区: {region[2]}x{region[3]}")self.status_var.set(f"选区模式: x={region[0]}, y={region[1]}, w={region[2]}, h={region[3]}")else:self.region = Noneself.mode_btn.config(text="全屏模式")self.status_var.set("全屏模式")# 重新显示浮窗self.root.deiconify()def run(self):"""启动主界面"""self.root.mainloop()# ============ 命令行模式(不需要GUI的轻量方案) ============def cli_translate(region=None):"""命令行模式:截屏一次,识别翻译,打印结果"""print("正在截屏...")image = capture_region(region)print("正在识别文字...")text = extract_text_from_image(image)if not text:print("未识别到文字")returnprint("\n--- 识别结果 ---")print(text)print()print("--- 翻译结果 ---")translated = translate_text(text)print(translated)# ============ 主程序 ============def main():import sysif "--cli" in sys.argv:# 命令行模式cli_translate()else:# GUI浮窗模式app = TranslationOverlay()app.run()if __name__ == "__main__":main()

运行效果

GUI模式:

python screen_translator.py

会弹出一个深色主题的小窗口,上面是原文,下面是译文。

操作流程:

  1. 选区模式,用鼠标在屏幕上框选你要翻译的区域(比如PDF文档的文字部分)

  2. 开始监控,工具会每隔3秒自动截屏、识别、翻译

  3. 译文实时显示在浮窗里

浮窗半透明,可以拖到屏幕角落,不遮挡你正在看的内容。

命令行模式:

如果你不想用GUI,可以加 --cli 参数:

python screen_translator.py --cli

会截取当前全屏,识别文字后翻译,直接在终端打印结果。适合一次性翻译。


实际效果演示

假设屏幕上有一段英文技术文档:

The garbage collector in Python uses a combination of reference counting and a cyclic garbage collector to manage memory. Reference counting is the primary mechanism, where each object maintains a count of references pointing to it.

工具识别并翻译后,浮窗显示:

Python中的垃圾回收器使用引用计数和循环垃圾回收器的组合来管理内存。引用计数是主要机制,每个对象维护一个指向它的引用计数。

识别准确率取决于屏幕清晰度和字体。标准印刷体(比如PDF、网页、IDE里的代码)识别率很高,基本在95%以上。手写体或低分辨率的截图会差一些。


提升识别率的几个技巧

调整二值化阈值。代码里 threshold = 150,如果你的截图背景偏暗,调低一点(比如120)。背景偏亮就调高(比如180)。

放大截图。 如果原文字体很小,OCR识别率会下降。可以在识别前先放大图片:

# 在 extract_text_from_image 函数里加一行widthheight = image.sizeimage = image.resize((width*2height*2), Image.LANCZOS)

放大两倍后,小字也能认出来了。

选区要精确。 框选区域的时候,尽量只框文字部分,别把图标、边框、空白区域框进去。干扰越少,识别越准。


如果想换成PaddleOCR

PaddleOCR对中文的识别效果更好,尤其是一些不太规范的场景。改动不大:

from paddleocr import PaddleOCR# 初始化(首次会自动下载模型)ocr = PaddleOCR(use_angle_cls=Truelang="en")def extract_text_paddle(image):"""用PaddleOCR识别"""import numpyasnpimg_array = np.array(image)result = ocr.ocr(img_arraycls=True)texts = []if result and result[0]:for line in result[0]:texts.append(line[1][0])  # line[1][0] 是识别文字return "\n".join(texts)

安装PaddleOCR:

pip install paddlepaddle paddleocr

安装包大概2GB左右,需要等一会儿。但识别效果确实好,尤其是中英混排的场景。


关于翻译API

代码里用的是 googletrans,免费的非官方接口。优点是不用注册,缺点是不够稳定,偶尔会被限流

如果你的使用频率高,可以考虑换成付费翻译API。几个选择:

  • 百度翻译API:每月200万字符免费额度,注册简单

  • 腾讯翻译君:每月500万字符免费,需要腾讯云账号

  • DeepL API:翻译质量公认好,每月50万字符免费

换API只需要改 translate_text 函数。比如用百度翻译:

import hashlibimport requestsdef translate_baidu(textapp_id="你的APPID"secret_key="你的密钥"):"""百度翻译API"""salt = "12345"sign = hashlib.md5(f"{app_id}{text}{salt}{secret_key}".encode()).hexdigest()url = "https://fanyi-api.baidu.com/api/trans/vip/translate"params = {"q"text,"from""en","to""zh","appid"app_id,"salt"salt,"sign"sign,    }resp = requests.get(urlparams=params)result = resp.json()return"\n".join(item["dst"foriteminresult.get("trans_result", []))

几个已知限制

不能翻译视频里的字幕。 视频字幕变化太快,3秒刷一次跟不上。你可以把 REFRESH_INTERVAL 调成1秒,但CPU占用会上去。

选区模式在有些系统上有兼容问题。macOS的权限管控比较严,需要在系统设置里给终端授权屏幕录制权限。Linux下如果用了Wayland,pyautogui 可能截不了屏,需要用 gnome-screenshot 或 grim 替代。

离线翻译。 目前用的是在线翻译API,需要联网。如果想完全离线,可以用 argostranslate 这个库,能在本地跑翻译模型,但翻译质量比在线的差一截。


最后

如果你经常需要阅读英文内容,建议动手试一下。代码跑通之后,按自己的习惯调一调界面和参数,会变成你日常离不开的小工具。

有什么想改进的地方,欢迎留言。

“无他,惟手熟尔”!有需要的用起来!关注微信公众号「Nicholas与Pypi」获取更多Python实战!
------加入知识库与更多人一起学习------

https://ima.qq.com/wiki/?shareId=f2628818f0874da17b71ffa0e5e8408114e7dbad46f1745bbd1cc1365277631c

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:40:21 HTTP/2.0 GET : https://f.mffb.com.cn/a/510039.html
  2. 运行时间 : 0.305872s [ 吞吐率:3.27req/s ] 内存消耗:4,710.39kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9ac367738a603f703945c3f44a80a100
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000965s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001734s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000597s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000677s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001311s ]
  6. SELECT * FROM `set` [ RunTime:0.032611s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001666s ]
  8. SELECT * FROM `article` WHERE `id` = 510039 LIMIT 1 [ RunTime:0.001679s ]
  9. UPDATE `article` SET `lasttime` = 1787294422 WHERE `id` = 510039 [ RunTime:0.024163s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000837s ]
  11. SELECT * FROM `article` WHERE `id` < 510039 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001252s ]
  12. SELECT * FROM `article` WHERE `id` > 510039 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001577s ]
  13. SELECT * FROM `article` WHERE `id` < 510039 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.027633s ]
  14. SELECT * FROM `article` WHERE `id` < 510039 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008246s ]
  15. SELECT * FROM `article` WHERE `id` < 510039 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.031216s ]
0.309437s