日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python随机抽取人名_用Python打造一个CRM系统(五)

發布時間:2025/3/19 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python随机抽取人名_用Python打造一个CRM系统(五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇上實現了線索功能模塊,在實際使用中除了線索數據除了輸入的結構化數據,也有可能是來自非結構化數據,如名片、PDF文檔、語音視頻等。為方便線索錄入,本篇中將以名片為例,實現利用OCR等技術將名片信息自動轉成結構化數據自動填充到線索的對應字段中進行存儲的功能。

1. OCR技術

OCR,全程Optical Character Recognition,翻譯過來是光學字符識別的意思。它是指對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息的過程。簡單來說就是將圖像中的文字進行識別,并以文本的形式返回。

? OCR處理過程可分為圖像預處理、文本識別和后處理等步驟。

文字識別在傳統技術上采用模板匹配的方式,但這種方式由于缺乏上下文信息識別正確率難以保證,現在多基于深度學習技術進行識別,比如RNN和LSTM等依賴于時序關系的神經網絡是最理想的選擇。
?

在本文中將使用pytesseract實現OCR功能。

2. pytesseract的安裝使用

pytesseract是對Tesseract的Python封裝,pytesseract的安裝命令如下:

$ pip install pytesseract ? Tesseract(/'tes?r?kt/) 這個詞的意思是"超立方體",Tesseract 已經有 30 年歷史,開始它是惠普實驗室的一款專利軟件,然后在 2005 年開源,自 2006 年后由 Google 贊助進行后續的開發和維護。在現在的免費 OCR 引擎中,其識別精度也仍然是出類拔萃的。
?

安裝完成后就可以在項目中使用了。

3. 在Django中加入OCR功能

先在Django中新創建一個img2text的應用。命令如下:

$ python manage.py startapp img2text

執行完成后按照上一篇中的步驟將這個應用的結構重新整理下。

? ...進行下面的操作:
  • 將目錄移動到one_crm目錄下面;
  • 編輯leads下面的apps.py,將其中name改成one_crm.img2text;
  • 將“one_crm.leads.apps.Img2TextConfig”添加到config/settings/base.py文件的LOCAL_APPS變量中,使這個模塊生效。
  • ?

    接下來依次更新視圖、模板和路由。

    4. 添加視圖

    這里需要提交名片文件,所以選擇一個表單視圖來實現。先在forms.py文件中添加一個名為CardForm的表單類,內容如下:

    class CardForm(forms.Form):img = forms.FileField(label="請選擇名片")def parse_card(self):pass

    其中parse_card函數是用來解析名片的。解析過程是將名片用OCR將其中的文本解析出來,然后從解析的文本中抽取名字、電話和郵箱等信息,最后把這些信息保存到線索模型中。

    「抽取名字」

    這里抽取名字的方式比較簡單,基本思路是將名片中提取的信息按行進行分割,然后每行文本就jieba進行分析判斷詞性,若詞性是nr即為人名。實現如下:

    def isname(single_word_string):"""判斷是否是人名"""pair_word_list = pseg.lcut(single_word_string)for _, cixing in pair_word_list:if cixing == "nr":return Truereturn Falsedef extract_name(s):"""提取人名"""name = "未知"data = s.split("n")for i in data:i = i.replace(" ", "")if isname(i):name = ibreakreturn name ? 在自然語言處理過程中,為了能更好地處理句子,往往需要把句子拆開分成一個一個的詞語,這樣能更好的分析句子的特性,這個過程叫做——分詞。jieba是當前最好的 Python 中文分詞庫之一。
    ?

    「抽取電話」

    抽取電話的方式比較簡單,就是用正則表達式進行提取(這里的正則沒有對國際號,如+86進行處理),實現如下:

    def extract_phone(s):numbers = re.findall("(1d{2}-?d{4}-?d{4})", s)if numbers:return numbers[0]else:return ""

    「抽取郵箱」

    抽取郵箱的方式和電話類似,也是用正則表達式,實現如下:

    def extract_email(s):emails = re.findall(r"([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)", s)if emails:return emails[0]else:return ""

    完成信息提取函數后更新parse_card函數如下:

    def parse_card(self):img = Image.open(self.cleaned_data["img"])s = pytesseract.image_to_string(img, lang="chi_sim")contact = extract_phone(s)email = extract_email(s)name = extract_name(s)lead = Lead(name=name,contact=contact,email=email,description=s,attachment=self.cleaned_data["img"],)lead.save()return lead.pk

    以上就完成了表單的實現,接著是更新視圖views.py,實現將提交的名片進行解析,成功后跳轉到該線索的更新頁面進行人工確認,代碼如下:

    class CardFormView(FormView):template_name = "img2text/card_form.html"form_class = CardFormdef form_valid(self, form):self.pk = form.parse_card()return super().form_valid(form)def get_success_url(self) -> str:return reverse_lazy("leads:lead-update", kwargs={"pk": self.pk})

    5.實現模板

    ? 完成了視圖后新建一個模板文件,在templates文件夾下創建一個名為img2text子文件夾,并新建一個card_form.html文件,內容如下:

    {% block content %} <form method="POST" enctype="multipart/form-data"><!-- Security token -->{% csrf_token %}<!-- Using the formset -->{{ form|crispy }}<div class="control-group"><div class="controls"><button type="submit" class="btn btn-primary btn-lg btn-block">提交</button></div></div> </form> {% endblock content %}

    實現的功能就是一個提交文件的表單。

    6. 更新路由

    最后一步就是將上面實現的視圖添加到項目的路由中,更新urls.py內容如下:

    from django.urls import pathfrom .views import card_form_viewapp_name = "img2text"urlpatterns = [path("", card_form_view, name="card"), ]

    然后更新config文件夾下面的總路由配置文件urls.py即可。

    比如這里提交一個名片:

    http://weixin.qq.com/r/8SkqMlDEYQ0erRRR93zj (二維碼自動識別)

    將提取到“張叁”、“139-8888-6666”、“example@qq.com”這幾個關鍵信息,并把解析出來的內容保存到“描述”字段,效果如下:

    完整的代碼請參考:https://github.com/flingjie/one_crm

    總結

    以上是生活随笔為你收集整理的python随机抽取人名_用Python打造一个CRM系统(五)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。