2025年9月6日星期六

安装 PaddleOCR的方法

 

安装飞桨版本:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/windows-pip.html

命令:

 python -m pip install paddlepaddle-gpu==3.1.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu129/

pip install paddlex[ocr]



远程方案:(这个不好用,需要python10)

PaddlePaddle 提供了 Paddle Serving,可以把模型打包成远程服务。
步骤大致是:

  1. 导出 PaddleOCR 的模型(PP-Structure)。

  2. 用 Paddle Serving 部署:

pip install paddle-serving-client paddle-serving-app paddle-serving-server-gpu
  1. 启动服务端:

python -m paddle_serving_server.serve --model table_rec_model --port 9393
  1. 客户端调用:

from paddle_serving_client import Client client = Client() client.load_client_config("table_rec_model/serving_client_conf.prototxt") client.connect(["127.0.0.1:9393"]) result = client.predict(feed={"image": img_bytes})

2025年9月4日星期四

vscode在虚拟环境下,断点失效问题解决

 VSCode在使用虚拟环境调试时断点失效,通常是因为launch.json配置文件中的`"justMyCode"设置为true`,导致调试器仅执行用户自己的代码而跳过第三方库的调用。解决方法是找到项目中的launch.json文件,将其中的`"justMyCode": true修改为"justMyCode": false`,并重新启动调试即可。

如果原来没有,则添加:
"justMyCode": false 

2025年6月6日星期五

pip安装,当出现证书错误处理

 出现这样的错误:

SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)'))) - skipping

通过忽略证书来处理:

--trusted-host download.pytorch.org

2025年6月1日星期日

通过注入js的方式,获取网页中鼠标的位置

 


await page.evaluate("""

() => {

window.lastMousePosition = { x: 0, y: 0 };

document.addEventListener('mousemove', (event) => {

window.lastMousePosition = { x: event.clientX, y: event.clientY };

console.log(`Mouse moved to: (${event.clientX}, ${event.clientY})`);

});

}

""")


循环获取鼠标位置

while True:

mouse_position = await page.evaluate("window.lastMousePosition")

print(f"Mouse position: {mouse_position}")

await asyncio.sleep(2)

playwright将网页截图的方式

 from playwright.async_api import async_playwright

import os

import pytesseract
from PIL import Image
import asyncio


proxy = 'http://abc.com.cn:80'

async def download():
    async with async_playwright() as p:
        cookie = os.path.join(cookies_folder, "cookie.json")
        browser = await p.chromium.launch(
            headless=False,
            channel="chrome",
            proxy={"server": proxy}  # 设置代理?
        )
        context = await browser.new_context()
        page = await context.new_page()
        await page.goto("https://ddd.com/", timeout=180000)
        await page.wait_for_load_state("networkidle")
        # screenshot_path = 'fullpage.png'
        # await page.screenshot(path=screenshot_path, full_page=True)
        shadow_host = await page.query_selector('div#transcend-consent-manager')
        await shadow_host.screenshot(path='shadow_host.png')


        image = Image.open('shadow_host.png')
        data = pytesseract.image_to_data(image, lang='chi_sim+eng', output_type=pytesseract.Output.DICT)

2025年5月17日星期六

linux下的ollama的代理设置

需要在/etc/systemd/system/ollama.service的内容修改如下:

[Unit]

Description=Ollama Service

After=network-online.target

[Service]

ExecStart=/usr/local/bin/ollama serve

User=ollama

Group=ollama

Restart=always

RestartSec=3

Environment="PATH=/home/abc/.local/bin"

Environment="PATH=$PATH"

Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"

Environment="OLLAMA_SCHED_SPREAD=1"

Environment="OLLAMA_KEEP_ALIVE=-1"

Environment="OLLAMA_HOST=0.0.0.0"

Environment="OLLAMA_NUM_PARALLEL=10"

Environment="OLLAMA_ORIGINS=*"

Environment="https_proxy=http://abc.com:80"

Environment="http_proxy=http://abc.com:80"

[Install]

WantedBy=default.target


2025年5月2日星期五

openwrt中使用dnsmasq+nft实现按域名分流

 以前一直使用dnsmasq+iptables进行分流,现在都流行nft了。目前我还搞不清楚nft对比iptables到底好处在哪里。

dnsmasq需要安装dnsmasq-full,否则不支持nft功能。

dnsmasq的配置如下:

server=/discord.com/1.1.1.1

nftset=/discord.com/4#ip#mangle#gfwlist,6#ip6#mangle#gfwlist6


这样将dns查询时,将ip地址分别添加到gfwlist,和gfwlist6

其中这两个变量的定义是:

nft list table ip mangle &>/dev/null || nft add table ip mangle

nft list table ip6 mangle &>/dev/null || nft add table ip6 mangle

nft list set ip mangle gfwlist &>/dev/null || nft add set ip mangle gfwlist { type ipv4_addr\; flags interval\; }

nft list set ip6 mangle gfwlist6 &>/dev/null || nft add set ip6 mangle gfwlist6 { type ipv6_addr\; flags interval\;}

记住,需要先定义mangle,再定义gfwlist,和gfwlist6

添加链到mangle中:

# Add chains if they don't exist

nft list chain ip mangle PREROUTING &>/dev/null || nft add chain ip mangle PREROUTING { type filter hook prerouting priority mangle\; policy accept\; }

nft list chain ip mangle OUTPUT &>/dev/null || nft add chain ip mangle OUTPUT { type filter hook output priority mangle\; policy accept\; }

nft list chain ip6 mangle PREROUTING &>/dev/null || nft add chain ip6 mangle PREROUTING { type filter hook prerouting priority mangle\; policy accept\; }

nft list chain ip6 mangle OUTPUT &>/dev/null || nft add chain ip6 mangle OUTPUT { type filter hook output priority mangle\; policy accept\; }

分流使用tproxy:

# Add TPROXY rules

nft add rule ip mangle PREROUTING ip protocol tcp ip daddr @gfwlist tproxy to 127.0.0.1:1237 meta mark set 0x2

nft add rule ip mangle PREROUTING ip protocol udp ip daddr @gfwlist tproxy to 127.0.0.1:1237 meta mark set 0x2

nft add rule ip6 mangle PREROUTING ip6 nexthdr tcp ip6 daddr @gfwlist6 tproxy to [::1]:1237 meta mark set 0x2

nft add rule ip6 mangle PREROUTING ip6 nexthdr udp ip6 daddr @gfwlist6 tproxy to [::1]:1237 meta mark set 0x2

需要使用tproxy,记得需要安装kmod-nft-tproxy,否则不支持。

为什么使用tproxy,因为udp只支持tproxy,不支持redirect。

如果是本机,还需要在OUTPUT链添加mark:

# Add mark rules for OUTPUT

nft add rule ip mangle OUTPUT ip protocol tcp ip daddr @gfwlist mark set 0x4

nft add rule ip mangle OUTPUT ip protocol udp ip daddr @gfwlist mark set 0x4

nft add rule ip6 mangle OUTPUT ip6 nexthdr tcp ip6 daddr @gfwlist6 mark set 0x4

nft add rule ip6 mangle OUTPUT ip6 nexthdr udp ip6 daddr @gfwlist6 mark set 0x4

当然ip route还需要用原来的:

ip route add local 0.0.0.0/0 dev lo table 110

ip -6 route add local ::/0 dev lo table 111

ip rule add fwmark 2 lookup 110

ip rule add fwmark 4 lookup 110

ip -6 rule add fwmark 2 table 111

ip -6 rule add fwmark 4 table 111



安装 PaddleOCR的方法

  安装飞桨版本:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/windows-pip.html 命令:  python -m pip...