现有的企业ERP系统需要与另一个公司的WMS系统对接,出库单需要传递给WMS的API接口一个图片格式的ERP出库单附件,进行出库单核验,现有的ERP打印单据使用的Web打印控件Lodop实现的,看了下官方文档,发现只有导出当前页面到图片文件的功能,现在需求是需要打印的出库单样式的图片不是ERP出库单的操作页面,于是想变通下解决这个问题。
2025年08月29日
现有的企业ERP系统需要与另一个公司的WMS系统对接,出库单需要传递给WMS的API接口一个图片格式的ERP出库单附件,进行出库单核验,现有的ERP打印单据使用的Web打印控件Lodop实现的,看了下官方文档,发现只有导出当前页面到图片文件的功能,现在需求是需要打印的出库单样式的图片不是ERP出库单的操作页面,于是想变通下解决这个问题。
2025年08月29日
通过本文您将了前端二进制流,base64,Protobuf(Protocol Buffers)等相关知识
前端开发中,二进制流(Binary Stream)是以二进制形式传输或处理的原始数据序列,核心用于处理非文本类数据(如图片、文件、音视频),是实现文件上传 / 下载、Canvas 导出、音视频处理等功能的基础。
2025年08月29日
WebP 是一种同时提供了有损压缩与无损压缩的图片文件格式。可以大大压缩图片的大小,并且图片的质量和 png、jpeg 等相同。WebP 的无损压缩比 png 格式的文件平均少了 45% 的大小。
2025年08月29日
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import base64
import os
from PIL import Image
import pytesseract
import cv2
import numpy as np
# 指定 tesseract 可执行文件的路径
pytesseract.pytesseract.tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'
def preprocess_image(image_path):
"""
优化预处理:增加降噪和形态学处理
"""
image = Image.open(image_path)
image_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
# 转为灰度并高斯模糊降噪
gray = cv2.cvtColor(image_cv, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (3, 3), 0)
# 自适应阈值处理
binary = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY_INV, 21, 4)
# 形态学闭运算连接字符
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
closed = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)
# 中值滤波去噪
processed_image = cv2.medianBlur(closed, 3)
return Image.fromarray(processed_image)
def recognize_captcha(image_path):
processed_image = preprocess_image(image_path)
# 调试:保存预处理后的图片
debug_path = "processed_debug.png"
processed_image.save(debug_path)
print(f"预处理后的图片已保存至:{os.path.abspath(debug_path)}")
# 调整Tesseract参数(尝试不同PSM模式)
custom_config = r'--oem 3 --psm 8 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
captcha_text = pytesseract.image_to_string(processed_image, config=custom_config)
return captcha_text.strip()
def download_captcha():
driver = webdriver.Chrome()
try:
driver.get("系统地址")
img_element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "img[contains(@src, 'data:image/jpg; base64')]"))
)
src_data = img_element.get_attribute("src")
_, base64_str = src_data.split(",", 1)
image_data = base64.b64decode(base64_str)
save_path = "captcha.png"
with open(save_path, "wb") as f:
f.write(image_data)
return save_path
finally:
driver.quit() # 确保关闭浏览器
if __name__ == "__main__":
image_path = download_captcha()
if image_path:
captcha_text = recognize_captcha(image_path)
print(f"识别结果: {captcha_text}") 给此脚本添加个标题 用于发布
2025年08月29日
多模态RAG将是2024年AI应用架构发展的一个重要趋势,在前面的一篇文章里提到llama-index在这方面的尝试《利用GPT4-V及llama-index构建多模态RAG应用》,本文[1]中将以另一主流框架langchain为例介绍多模态RAG的实现。
2025年08月29日
HTTP协议、JSON、HTML、CSS这些都是基于文本。设计初衷是传输字符如 'A', 'B', 'C', '1', '2', '3'。而一张图片(JPG、PNG or GIF)本质是二进制数据,它包含大量在标准文本协议中无法直接表示的字节,如 0x89, 0x50, 0x4E, 0x47 (PNG文件头)。
2025年08月29日
在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票、订单的库存打印单、各种电子签署合同等等,以方便用户查看、打印或者下载。
例如下图的电子发票!
熟悉这块业务的童鞋,一定特别清楚,目前最常用的解决方案是:把相关的数据信息,通过一些技术手段生成对应的 PDF 文件,然后返回给用户,以便预览、下载或者打印。
2025年08月29日
Ubuntu 24.04系统使用Ollama安装Qwen2.5-VL-7B模型及OpenAPI调用的详细步骤如下: