Closed rovesoul closed 1 week ago
text_blind_watermark 项目确实是通过修改某些指定的字符来嵌入水印信息。具体来说,它会在文本中添加一些不可见的字符(如零宽度空格或零宽度非连接符),这些字符在视觉上不会改变文本的外观,但会改变底层的二进制表示。
工作原理 选择嵌入位置:根据特定算法选择文本中的某些位置,这些位置可以是字符、单词或句子。 嵌入水印信息:在选定的位置上添加不可见字符(如零宽度空格 \u200B 或零宽度非连接符 \u200C)。这些字符在视觉上不可见,但会改变文本的二进制表示。 提取水印信息:通过检测这些不可见字符的位置,提取出嵌入的二进制数据,并将其转换回原始的水印信息。 示例代码 以下是一个简单的 Python 示例,展示如何将水印嵌入到文本中并提取出来:
Python
def text_to_binary(text): return ''.join(format(ord(char), '08b') for char in text)
def binary_to_text(binary): chars = [binary[i:i+8] for i in range(0, len(binary), 8)] return ''.join(chr(int(char, 2)) for char in chars)
def embed_watermark(text, watermark): binary_watermark = text_to_binary(watermark) words = text.split() for i in range(len(binary_watermark)): if i < len(words): words[i] += '\u200B' if binary_watermark[i] == '1' else '\u200C' return ' '.join(words)
def extract_watermark(text): words = text.split() binary_watermark = ''.join('1' if '\u200B' in word else '0' for word in words) return binary_to_text(binary_watermark)
original_text = '这句话中有盲水印,你能提取出来吗?' watermark = 'ABC123'
text_with_watermark = embed_watermark(original_text, watermark) print("嵌入水印后的文本:", text_with_watermark)
extracted_watermark = extract_watermark(text_with_watermark) print("提取的水印内容:", extracted_watermark) AI-generated code. Review and use carefully. More info on FAQ. 这个示例展示了如何将水印信息转换为二进制,并嵌入到文本中。提取时,通过检测零宽度空格的位置,恢复原始的水印信息。
new bing 给的
您的来信已经收到,谢谢。待我尽快上线处理。 ——董汇标
感谢分享这么好的项目。
您的来信已经收到,谢谢。待我尽快上线处理。 ——董汇标
您的来信已经收到,谢谢。待我尽快上线处理。 ——董汇标
你好,能否花钱购买?
@.***
发件人: 郭飞 发送时间: 2024-10-19 11:35 收件人: guofei9987/text_blind_watermark 抄送: ytfrdfiw; Comment 主题: Re: [guofei9987/text_blind_watermark] 咨询一下工作原理 (Issue #6) Closed #6 as completed. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
这是什么原理实现的