datetime 格式化日期

from datetime import datetime
输出
datetime.now().strftime("%Y-%m-%d")

datetime.fromtimestamp(time.time()).strftime("%Y-%m-%d")

首先变成datetime对象再用strftime输出

datetime.strptime("2024-10-11","%Y-%m-%d")
输入YYYY-MM-DD 的转为datetime对象

FZOCR v0.0.1

文件名 日期.pdf

Python 获得该文件保存到PDF文件夹,SQLite 中INSERT 该文件,并将日期.pdf 删除

PDF转图片进程 查询SQLite PDF表其中done为0 的那条数据,得到PDF地址 转换图片到图片库,文件名+时间戳.png 保存到IMG表。当全部转换完毕后设置该PDF表对应的数据键中的done为时间戳

OCR进程 查询img 表done为0 到 进行OCR 结果 json 保存到数据的info键 并将该条done为时间戳

streamlit

  • 每个页面都是一个应用 (默认30s)
  • 当前目录下pages 为各个页面应用
  • GET请求使用 streamlit.query_params.get(‘id’)
  • 全页面是按照 uploaded_file = st.file_uploader(“选择一张图片”, type=[“png”, “jpg”, “jpeg”])然后再判断uploaded_file
uploaded_file = st.file_uploader("选择一张图片", type=["png", "jpg", "jpeg"])
if uploaded_file is not None:
    image = Image.open(uploaded_file)
    st.image(image, caption="上传的图片", use_column_width=True)

    save_path = os.path.join(UPLOAD_DIR, uploaded_file.name)
    with open(save_path, "wb") as f:
        f.write(uploaded_file.getbuffer())
    st.success(f"图片已保存到:{save_path}")
import streamlit as st
from streamlit_pdf_viewer import pdf_viewer

st.header("Input info")

sx=st.text_input("TEXT")

user_age = st.slider("请选择您的年龄", 0, 100, 25)
tx=st.text_area("sqqqq")

btn_clicked = st.button("点击这里")

p=st.progress(0)
p.progress(user_age)
# 设置值

if btn_clicked:
    st.write("mmmk",sx)
    st.write("AGE",user_age)
    st.write("Click")
    st.write(p)


c=st.checkbox("同意吗")
st.write(c)

r=st.radio("选什么",{'axxxxxxx':"a",'bxxxx':"b",'c':"zzzzzzz"})
st.write("答案",r)

s=st.selectbox("选什么",['a',1,3,4,5])
st.write(s)

m=st.multiselect("选什么",['a',1,3,4,5])
st.write(m)

st.image("./a.jpg")

uploaded_file = st.file_uploader("选择一张图片", type=["png", "jpg", "jpeg"])

if uploaded_file is not None:
    st.image(uploaded_file)

pv=st.file_uploader("上传PDF",type=['pdf'])
if pv is not None:
    pdf_viewer(pv.read(),width=700,height=1000)

lst = ["苹果", "香蕉", "橙子"]
st.write(lst)                 # 默认 → ['苹果', '香蕉', '橙子']
st.code(lst, language="json") # 带灰底,更像代码块

st.markdown("\n".join(f"- {item}" for item in lst))
# //使用Markdown 实现显示列表进度



# 自由展示 columns
# 原始列表
fruit_list = [
    {"name": "苹果", "price": 5.8,  "pic": "apple"},
    {"name": "香蕉", "price": 3.2, "pic": "banana"},
    {"name": "橙子", "price": 4.5, "pic": "orange"},
]

# 用 columns 做“网格”:每行 3 张卡片
cols = st.columns(3)
for idx, fruit in enumerate(fruit_list):
    col = cols[idx % 3]   # 循环使用 3 列
    with col:
        # 卡片容器
        with st.container(border=True):
            # 1. 图(Unsplash 随机水果图)
            img_url = f"https://source.unsplash.com/200x200/?fruit,{fruit['pic']}"
            st.image(img_url, use_column_width=True)

            # 2. 名称 + 价格
            st.markdown(f"**{fruit['name']}**")
            st.caption(f"¥{fruit['price']}/斤")

            # 3. 数量选择
            qty = st.number_input("斤数", min_value=0, max_value=20, step=1, key=f"qty_{idx}")

            # 4. 折叠详情
            with st.expander("查看详情"):
                st.write("产地:南方优质果园")
                st.write("甜度:★★★★☆")

            # 5. 购买按钮
            if st.button("加入购物车", key=f"buy_{idx}", type="primary"):
                if qty == 0:
                    st.warning("请先选择数量!")
                else:
                    st.success(f"已添加 {qty} 斤 {fruit['name']} 到购物车!")

qwen3vl 经验 OCR

1.能用8B 就用8B OCR下与2B 和 4B简直不是一个量级别,但是显存需求得12GB

2. qwen3vl 2B 的Q4 量化和qwen2.5vl 7b Q4 在OCR下情况差不多,但是qwen3vl 2B在prompt提示词语下可以做相对复杂的操作,比如总结归纳。

3. qwen3vl 2b 在Q4 (ollama 默认情况下的模型)量化下 300dpi的 A4 文件 无法识别较小的文字(5号字体以下),但是Q8 量化下 可以较好的识别出小字体。

4. qwen3VL 2b OCR整个文档会生成\n 换行符,会打断json格式输出,请在prompt中设置去除

prompt限制输出 以及惩罚

 一、将文档中所有识别出的文字内容按阅读顺序拼接为一行字符串,彻底删除所有换行符(\n)、回车符(\r)、制表符(\t),仅保留单个空格作为字与字之间的分隔符 → 变量 all_raw

三、输出要求
        若 all_raw 中仍包含 \n、\r、\t 或多行结构,视为格式错误,必须重新生成。

八大绩效域

1. 干系人绩效域

  • 论文核心点:干系人识别全覆盖 + 期望管理 + 持续沟通,避免需求偏差。
  • 项目实例:某政务 APP 开发项目,通过 “干系人地图” 识别出用户(市民)、审批部门、运维团队等 12 类干系人。针对市民关注 “操作便捷性”、审批部门关注 “数据安全” 的差异期望,每周推送进度简报,上线前组织 3 轮干系人试用反馈,最终 APP 上线满意度达 92%。

2. 团队绩效域

  • 论文核心点:跨职能团队搭建 + 技能互补 + 激励机制,提升执行效率。
  • 项目实例:某电商平台升级项目,组建 “开发 + 测试 + 运营 + 客服” 跨职能团队。针对新人缺乏接口开发经验的问题,安排资深工程师结对辅导;设立 “迭代贡献奖”,对按时完成核心模块的成员给予奖金激励,团队迭代交付周期从 45 天缩短至 30 天。

3. 开发方法和生命周期绩效域

  • 论文核心点:结合项目特点选择开发方法,动态适配需求变化。
  • 项目实例:某新能源汽车充电桩监控系统项目,因需求明确(功能固定、接口标准),前期采用瀑布模型;后期用户新增 “远程故障预警” 需求,切换为敏捷 Scrum 模式,以 2 周为迭代周期,快速迭代 3 次完成新增功能,避免整体返工。

4. 规划绩效域

  • 论文核心点:多维度规划协同 + 动态调整机制,平衡范围、时间、成本。
  • 项目实例:某智慧园区建设项目,初期规划时同步制定 “范围说明书 + 进度网络图 + 成本预算表”,明确 3 个月完成基础设施部署。中期因疫情导致设备到货延迟 10 天,通过调整施工顺序(先部署核心区域)、复用现有部分设备,未扩大成本且仅延期 3 天交付。

5. 项目工作绩效域

  • 论文核心点:工作分解结构化 + 资源优化配置 + 变更控制,确保执行落地。
  • 项目实例:某企业 ERP 系统升级项目,将工作分解为 “需求调研、系统开发、数据迁移、人员培训”4 大模块,为数据迁移模块优先配置数据库专家资源。执行中因业务部门新增 “报表自定义” 需求,通过变更流程评估影响后,增加 1 名开发人员专项负责,未影响核心模块交付。

6. 交付绩效域

  • 论文核心点:交付物验收标准明确 + 价值验证 + 干系人确认,确保成果达标。
  • 项目实例:某在线教育平台课程更新项目,提前明确 “课程视频清晰度≥1080P、知识点覆盖率 100%、习题正确率≥85%” 的验收标准。交付前组织教研团队逐项核验,邀请 100 名学员试学反馈,针对 “习题难度偏高” 的问题优化后,正式上线后课程完课率提升 40%。

7. 度量绩效域

  • 论文核心点:关键指标量化 + 数据驱动决策,及时纠偏项目偏差。
  • 项目实例:某物流仓储自动化项目,设定 “设备安装合格率(≥98%)、系统响应时间(≤2 秒)、成本偏差率(≤±5%)”3 个核心度量指标。中期监控发现成本偏差率达 8%(因设备涨价),通过更换性价比更高的供应商,最终将偏差率控制在 3%,未影响项目价值。

8. 不确定绩效域

  • 论文核心点:风险识别前置 + 应对预案 + 机会转化,降低不确定性影响。
  • 项目实例:某城市轨道交通信号系统项目,前期识别出 “技术标准变更、核心部件供货延迟” 两大高风险。针对技术变更,提前预留 15% 的研发缓冲时间;针对供货延迟,与 2 家供应商签订备选协议。项目执行中果然出现核心部件延迟到货,启用备选供应商后,仅延期 2 天,未影响整体通车计划。