亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        開源PaddleOCR技術(shù)在企業(yè)營業(yè)執(zhí)照識(shí)別上的改進(jìn)與實(shí)踐

        2021-11-04 11:01:06仇建民
        現(xiàn)代信息科技 2021年9期
        關(guān)鍵詞:圖像識(shí)別

        DOI:10.19850/j.cnki.2096-4706.2021.09.018

        摘? 要:文章設(shè)計(jì)一種用于識(shí)別企業(yè)營業(yè)執(zhí)照圖像的算法,其可自動(dòng)提取統(tǒng)一社會(huì)信用代碼、公司名稱等關(guān)鍵字段信息。以開源PaddleOCR框架為基礎(chǔ),通過圖像方向自動(dòng)調(diào)整、文本輸出結(jié)構(gòu)化、局部二次識(shí)別等一系列改進(jìn)措施,解決了多種圖片質(zhì)量不佳情況下僅通過PaddleOCR無法準(zhǔn)確識(shí)別信息的問題,整體識(shí)別準(zhǔn)確率提升至90%以上,且實(shí)現(xiàn)秒級檢測。該成果已投入實(shí)際使用,輔助前臺(tái)操作人員快速識(shí)別所填寫的營業(yè)執(zhí)照信息是否準(zhǔn)確,提高人工錄入效率。

        關(guān)鍵詞:PaddleOCR;圖像識(shí)別;企業(yè)營業(yè)執(zhí)照;AI

        中圖分類號(hào):TP391.4;TP18? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2021)09-0065-06

        Improvement and Practice of Open Source PaddleOCR Technology in?Enterprise Business License Recognition

        QIU Jianmin

        (China Telecom Corporation Limited Jiangsu Branch,Nanjing? 210037,China)

        Abstract:In this paper,an algorithm for recognizing the enterprise business license image is designed,which can extract automatically the unified social credit code,company name and other key field information. Based on the open source PaddleOCR framework,through a series of improvement measures,such as image orientation automatic adjustment,structured text output,local secondary recognition,the problem that information cannot be accurately recognized only by PaddleOCR under the situation of several kinds of poor image quality is solved,the overall recognition accuracy is improved to more than 90%,and second level detection is realized. This achievement has been put into the actual use to assist the front desk operators to quickly identify whether the business license information filled in is accurate or not,and improve the efficiency of manual entry.

        Keywords:PaddleOCR;image recognition;enterprise business license;AI

        0? 引? 言

        本文在開源PaddleOCR框架[1]的基礎(chǔ)上,設(shè)計(jì)AI算法自動(dòng)提取統(tǒng)一社會(huì)信用代碼、公司名稱等關(guān)鍵字段信息。通過一系列改進(jìn)措施,在PaddleOCR無法準(zhǔn)確識(shí)別多種質(zhì)量不佳圖片的情況下依然能夠準(zhǔn)確識(shí)別圖中關(guān)鍵信息,并實(shí)現(xiàn)秒級檢測,該成果已投入實(shí)際生產(chǎn)系統(tǒng)使用。適合從事圖像識(shí)別相關(guān)工作的人員共同研究討論。

        1? 背景

        早前,營業(yè)員在營業(yè)系統(tǒng)中登記企業(yè)營業(yè)執(zhí)照信息時(shí)均通過人工查看之后手動(dòng)錄入系統(tǒng),為提升人工錄入效率,需設(shè)計(jì)AI算法,自動(dòng)提取營業(yè)執(zhí)照中統(tǒng)一社會(huì)信用代碼、公司名稱等關(guān)鍵字段信息[2]。PaddleOCR是由百度公司開源的超輕量OCR(Optical Character Recognition)系統(tǒng),主要由DB文本檢測[3]、檢測框矯正[4]和CRNN文本識(shí)別[5]三部分組成。通過PaddleOCR能夠?qū)崿F(xiàn)文本的檢測與識(shí)別,正常識(shí)別的圖片如圖1所示。

        但是當(dāng)圖片存在低亮度、角度歪曲、光照不均、陰影遮擋、水印覆蓋、印章覆蓋等情況時(shí),PaddleOCR均未能完整準(zhǔn)確地識(shí)別出關(guān)鍵信息。未能正常識(shí)別的圖片如圖2所示。本文需重點(diǎn)解決以上復(fù)雜情況下的文字識(shí)別問題。

        2? 目標(biāo)

        在PaddleOCR源碼基礎(chǔ)上,通過補(bǔ)充自定義算法,包括增加圖像方向自動(dòng)調(diào)整、文本輸出結(jié)構(gòu)化、局部二次識(shí)別等技術(shù),解決以上諸多復(fù)雜情況下文字識(shí)別不準(zhǔn)確的問題,將營業(yè)執(zhí)照關(guān)鍵信息的識(shí)別準(zhǔn)確率由70%提升至90%。

        3? 改進(jìn)舉措

        3.1? 自動(dòng)調(diào)整圖像方向

        因?yàn)樵紶I業(yè)執(zhí)照圖像可能方向不正、角度不正,需統(tǒng)一將圖像方向調(diào)整為豎直方向,增強(qiáng)文字識(shí)別的連貫性。做法為:由于營業(yè)執(zhí)照中“營業(yè)執(zhí)照”這四個(gè)字的位置相對清晰,PaddleOCR基本均能識(shí)別出來,在識(shí)別出“營業(yè)執(zhí)照”四個(gè)字的基礎(chǔ)之上,增加一段代碼,定義為函數(shù)rectifyOCRAngle,用來判斷營業(yè)執(zhí)照的字在圖片中的哪個(gè)位置:在整體上1/3就認(rèn)為是上面,在下1/3就認(rèn)為是下面;在左1/3就認(rèn)為是左邊;在右1/3就認(rèn)為是右邊。進(jìn)而根據(jù)判斷結(jié)果進(jìn)行旋轉(zhuǎn),將圖像旋轉(zhuǎn)至豎直方向。rectifyOCRAngle函數(shù)代碼為:

        defrectifyOCRAngle(img, coordinates, ocrtexts):

        iangle = 0

        idx = -1

        sp = img.shape

        width = sp[1]

        height = sp[0]

        foriin range(len(BUSINESSLINCENSE_RULES)):

        for j in range(len(ocrtexts)):

        idx_find = str(ocrtexts[j][0]).find(BUSINESSLINCENSE_RULES[i])

        ifidx_find> -1:

        idx = j

        break

        ifidx> -1:

        break

        ifidx == -1:

        returnidx, img, coordinates, ocrtexts

        x_center = coordinates[idx][0][0] + (coordinates[idx][1][0] - coordinates[idx][0][0])/2.0

        y_center = coordinates[idx][0][1] + (coordinates[idx][3][1] - coordinates[idx][0][1])/2.0

        transposedImage = cv2.transpose(img)

        widthper = width / x_center

        heightper = height / y_center

        ifwidthper<2.5andwidthper>1.5:# 正面或下面

        ifheightper>2:

        angle = 0

        else:

        img = cv2.flip(img, -1);

        for j in range(len(coordinates)):

        coordinates[j][0][0] = width - 1 - coordinates [j][0][0]

        coordinates[j][0][1] = height - 1 - coordinates [j][0][1]

        coordinates[j][1][0] = width - 1 - coordinates [j][1][0]

        coordinates[j][1][1] = height - 1 - coordinates [j][1][1]

        coordinates[j][2][0] = width - 1 - coordinates [j][2][0]

        coordinates[j][2][1] = height - 1 - coordinates [j][2][1]

        coordinates[j][3][0] = width - 1 - coordinates [j][3][0]

        coordinates[j][3][1] = height - 1 - coordinates [j][3][1]

        pt1 = coordinates[j][0]

        coordinates[j][0] = coordinates[j][2]

        coordinates[j][2] = pt1

        pt2 = coordinates[j][1]

        coordinates[j][1] = coordinates[j][3]

        coordinates[j][3] = pt2

        print(coordinates)

        angle = 180

        else: # 左邊或右面

        略(可類比前一段代碼:正面或下面)

        returnidx, img, coordinates, ocrtexts

        調(diào)節(jié)前后的對比圖示例如圖3所示。

        3.2? 文本輸出結(jié)構(gòu)化

        在真實(shí)的營業(yè)執(zhí)照圖片中,統(tǒng)一社會(huì)信用處存在“(1/1)”“副本編碼”等額外的非相關(guān)文本,根據(jù)業(yè)務(wù)統(tǒng)一規(guī)范,利用正則表達(dá)式定義函數(shù)UnionCodeSechema,用于提取出18位標(biāo)準(zhǔn)代碼,刪除括號(hào)等多余的文本,確保統(tǒng)一社會(huì)信用代碼準(zhǔn)確。UnionCodeSechema函數(shù)代碼為 :

        defUnionCodeSechema(sUnionCode,coordinates,iUnionCode):

        i_tmp = sUnionCode.find('(')

        ifi_tmp> -1:

        sUnionCode = sUnionCode[0:i_tmp]

        foriin range(len(sUnionCode)):

        if (sUnionCode[i] >= '0'andsUnionCode[i] <= '9') or (sUnionCode[i] >= 'A'andsUnionCode[i] <= 'Z'):

        continue

        else:

        sUnionCode = sUnionCode[0:len(sUnionCode)]

        break

        iflen(sUnionCode) >= 18:

        sUnionCode = sUnionCode[0:18]

        else:

        pass

        returnsUnionCode

        統(tǒng)一社會(huì)信用代碼存在多余文字的示例如圖4所示。

        圖4? 統(tǒng)一社會(huì)信用代碼存在多余文字的示例

        3.3? 局部二次識(shí)別

        通過分析原始PaddleOCR識(shí)別不準(zhǔn)確的案例,發(fā)現(xiàn)90%識(shí)別不準(zhǔn)確都是由于識(shí)別出來的文字不完整,當(dāng)原始圖片出現(xiàn)亮度低、角度歪曲、光照不均、陰影遮擋、水印覆蓋、印章覆蓋等情況,往往會(huì)導(dǎo)致直接識(shí)別的結(jié)果有缺失。為此,我們提出局部二次識(shí)別的解決辦法。針對各種識(shí)別結(jié)果局部缺失的情況,將識(shí)別不準(zhǔn)確的局部圖片單獨(dú)提取出來進(jìn)行二次單獨(dú)識(shí)別,減少了整張圖片的背景干擾,再將局部二次識(shí)別出來的結(jié)果拼接至首次PaddleOCR識(shí)別結(jié)果中,從而極大地提升識(shí)別的準(zhǔn)確率。需要局部二次識(shí)別的場景為:

        (1)針對統(tǒng)一社會(huì)信用代碼:

        1)前面的字識(shí)別出了,后面的編碼未識(shí)別出或者識(shí)別不完整:根據(jù)字的定位,提取后面區(qū)域的圖像進(jìn)行二次識(shí)別,識(shí)別出編碼。

        2)后面的編碼識(shí)別出了,前面的字未識(shí)別出或者識(shí)別不完整:根據(jù)編碼的定位,提取前面區(qū)域的圖像進(jìn)行二次識(shí)別,識(shí)別出字。

        3)前面的字未識(shí)別出或者識(shí)別不完整,后面的編碼也未識(shí)別出或者識(shí)別不完整:根據(jù)營業(yè)執(zhí)照和公司名稱的位置,估算統(tǒng)一社會(huì)信用代碼的位置和范圍,提取出該段區(qū)域進(jìn)行二次識(shí)別,識(shí)別出編碼。

        (2)針對公司名稱:

        1)前面的字識(shí)別出了,后面的公司名稱未識(shí)別出或者識(shí)別不完整:根據(jù)字的定位,提取后面區(qū)域的圖像進(jìn)行二次識(shí)別,識(shí)別出公司名稱。

        2)后面的公司名稱識(shí)別出了,前面的字未識(shí)別出或者識(shí)別不完整:根據(jù)公司名稱的定位,提取前面區(qū)域的圖像進(jìn)行二次識(shí)別,識(shí)別出字。

        3)前面的字未識(shí)別出或者識(shí)別不完整,后面的公司名稱也未識(shí)別出或者識(shí)別不完整:根據(jù)營業(yè)執(zhí)照和統(tǒng)一社會(huì)信用代碼的位置,估算公司名稱的位置和范圍,提取出該段區(qū)域進(jìn)行二次識(shí)別,識(shí)別出公司名稱。

        其中,營業(yè)執(zhí)照識(shí)別出的文字滿足以下條件之一即可定位:['營業(yè)執(zhí)照', '營業(yè)執(zhí)', '業(yè)執(zhí)照', '執(zhí)照', '營業(yè)']);統(tǒng)一社會(huì)信用代碼識(shí)別出的文字滿足以下條件之一即可定位:['統(tǒng)一社會(huì)信用代碼', '統(tǒng)一社會(huì)信用代', '統(tǒng)一社會(huì)信用', '統(tǒng)一社會(huì)信', '統(tǒng)一社會(huì)', '統(tǒng)一社', '社會(huì)信用代碼', '信用代碼', '代碼'];公司名稱識(shí)別出的文字滿足以下條件之一即可定位:['名稱',名,稱]。

        自定義函數(shù)secOCRRecog,用于二次識(shí)別,自定義函數(shù)TextSechema,用于判斷需要二次識(shí)別的情況并調(diào)用secOCRRecog,代碼分別為 :

        defsecOCRRecog(self, img, type):

        cv2.imwrite(TEMPPIC_PATH, img)

        if type == '3':

        ocrresult = self.ocrModel.ocr(TEMPPIC_PATH, det=True, rec=True, cls=True)

        print('3-----' + str(ocrresult))

        b_find = False

        sp = img.shape

        width = sp[1]

        height = sp[0]

        foriin range(len(ocrresult)):

        if (len(ocrresult[i][1][0]) >0):

        s_search = re.search(r'\d{8}', ocrresult[i][1][0])

        ifs_search:

        b_find = True

        x = int(ocrresult[i][0][0][0])

        y_dis = int(ocrresult[i][0][3][1] - ocrresult[i][0][0][1])

        y = int(ocrresult[i][0][0][1])

        if x > (width // 2):

        cropped = img[y:(y + y_dis), int(width / 2):(width - 20), :]

        else:

        cropped = img[y:(y + y_dis), 20: int(width / 2), :]

        ret_tmp = self.secOCRRecog(cropped, '1')

        returnret_tmp

        ifb_find == False:

        cropped = img[(height // 4):(height - height // 4), 30: (width - 30), :]

        ret_tmp = self.secOCRRecog(cropped, '1')

        print(ret_tmp)

        ifret_tmp:

        returnret_tmp

        else:

        cropped = img[(height // 6):(height - height // 2), 30: (width - 30), :]

        ret_tmp = self.secOCRRecog(cropped, '1')

        ifret_tmp:

        returnret_tmp

        else:

        cropped = img[(height // 2):(height - height // 6), 30: (width - 30), :]

        ret_tmp = self.secOCRRecog(cropped, '1')

        returnret_tmp

        elif type == '1'or type == '2':

        略(類比前一段代碼iftype == '3',繼續(xù)完成type == '1'和type == '2')

        defTextSechema(self, img, coordinates, ocrTexts, icode):

        ls_ret = []

        b_find = False

        sp = img.shape

        width = sp[1]

        height = sp[0]

        foriin range(len(UNIONCODE_RULES)):

        for j in range(len(ocrTexts)):

        ifocrTexts[j][0].find(UNIONCODE_RULES[i]) > -1:

        iflen(ocrTexts[j][0]) >10:

        s_search = re.search("\d", ocrTexts[j][0])

        i_tag = s_search.start()

        ls_ret.append(['統(tǒng)一社會(huì)信用代碼', UnionCodeSechema (ocrTexts[j][0][i_tag:], coordinates, j)])

        b_find = True

        else:

        ifb_find == False:

        print(coordinates[j])

        x = int(coordinates[j][0][0])

        y = int(coordinates[j][0][1])

        y_dis = int(coordinates[j][3][1] - coordinates[j][0][1])

        cropped = img[y:(y + y_dis), x:(x + int(width / 2) + 20), :]

        ret_tmp = self.secOCRRecog(cropped, '1')

        ifret_tmp:

        ls_ret.append(['統(tǒng)一社會(huì)信用代碼', UnionCodeSechema (ret_tmp[1], coordinates, j)])

        b_find = True

        for j in range(len(ocrTexts)):

        if (len(ocrTexts[j][0]) == 2andocrTexts[j][0] == '名稱'and (

        (j + 1

        ls_ret.append(['名稱', ocrTexts[j + 1][0]])

        i_name = j + 1

        break

        eliflen(ocrTexts[j][0]) == 1andocrTexts[j][0] == '稱'andlen(ocrTexts[j + 1][0]) >2:

        ls_ret.append(['名稱', ocrTexts[j + 1][0]])

        i_name = j + 1

        break

        elif (len(ocrTexts[j][0]) >1) and (ocrTexts[j][0][0] == '稱'):

        ls_ret.append(['名稱', ocrTexts[j][0][1:]])

        i_name = j

        break

        elif (len(ocrTexts[j][0]) >2) and (ocrTexts[j][0][0] == '名') and (ocrTexts[j][0][1] == '稱'):

        ls_ret.append(['名稱', ocrTexts[j][0][2:]])

        i_name = j

        break

        elif (ocrTexts[j][0].find('名稱') > -1) and (len(ocrTexts[j][0]) >2):

        ls_ret.append(['名稱', ocrTexts[j][0]])

        i_name = j

        break

        elif (ocrTexts[j][0] == '名') and ((j + 2)

        ocrTexts[j + 1][0][0] != '稱'):

        ls_ret.append(['名稱', ocrTexts[j + 1][0]])

        i_name = j + 1

        break

        elif (ocrTexts[j][0] == '名') and ((j + 1)

        i_name = j

        print(coordinates[j])

        x = int(coordinates[j][0][0])

        y = int(coordinates[j][0][1])

        y_dis = int(coordinates[j][3][1] - coordinates[j][0][1])

        cropped = img[y:(y + y_dis), x:(x + int(width / 2) + 150), :]

        ret_tmp = self.secOCRRecog(cropped, '2')

        ifret_tmp:

        ls_ret.append(ret_tmp)

        break

        if (b_find == False) and (i_name> -1):

        print('營業(yè)執(zhí)照位置' + str(coordinates[icode]) + '\n')

        print('名稱' + str(coordinates[i_name]) + '\n')

        x = int(20)

        y = int(coordinates[icode][3][1] + 3)

        y_ = int(coordinates[i_name][0][1] - 6)

        if y < y_:

        cropped = img[y:y_, x: (width - 20), :]

        else:

        cropped = img[y_:y, x: (width - 20), :]

        ret_tmp = self.secOCRRecog(cropped, '3')

        ifret_tmp:

        ls_ret.append(

        ['統(tǒng)一社會(huì)信用代碼', UnionCodeSechema (ret_tmp[1], coordinates, icode)])

        returnls_ret

        針對前面章節(jié)中的圖2,PaddleOCR識(shí)別結(jié)果不完整,通過增加局部二次識(shí)別,補(bǔ)充識(shí)別出完整的統(tǒng)一社會(huì)信用代碼,示例對比如圖5所示。

        4? 結(jié)果及應(yīng)用情況

        使用完整的代碼識(shí)別773張樣本,最終識(shí)別結(jié)果準(zhǔn)確率超過90%,分析識(shí)別失敗的案例,基本是由于文字中存在生僻字,導(dǎo)致文本識(shí)別不準(zhǔn)確。識(shí)別失敗的案例如圖6所示。

        得益于PaddleOCR的輕量化模型部署,識(shí)別圖像的速度較快,新增的代碼僅僅針對需要二次識(shí)別的部分才會(huì)進(jìn)行二次識(shí)別。經(jīng)實(shí)際測驗(yàn),使用CPU機(jī)器識(shí)別單張營業(yè)執(zhí)照,約1~3秒鐘可出結(jié)果;使用GPU機(jī)器識(shí)別單張營業(yè)執(zhí)照,約0.5~1秒鐘可出結(jié)果。整體識(shí)別準(zhǔn)確率和效率均達(dá)預(yù)期。因此將本模型部署至實(shí)際生產(chǎn)系統(tǒng),用于營業(yè)人員在前臺(tái)錄入營業(yè)執(zhí)照信息時(shí)進(jìn)行自動(dòng)識(shí)別,提升了人工錄入效率。

        5? 結(jié)? 論

        本文在開源PaddleOCR框架基礎(chǔ)上,對代碼進(jìn)行了相應(yīng)的改進(jìn)和完善,解決了PaddleOCR無法準(zhǔn)確識(shí)別復(fù)雜場景下的營業(yè)執(zhí)照的問題,并將模型順利部署至實(shí)際生產(chǎn)系統(tǒng),幫助前臺(tái)營業(yè)人員自動(dòng)錄入營業(yè)執(zhí)照關(guān)鍵信息,具有較好的經(jīng)濟(jì)效益。后續(xù)可以繼續(xù)以PaddleOCR框架為基礎(chǔ),增加生僻字的fine turning,繼續(xù)提升識(shí)別準(zhǔn)確率。

        參考文獻(xiàn):

        [1] DU Y N,LI C X,GUO R Y,et al. PP-OCR:A Practical Ultra Lightweight OCR System [J/OL].arXiv:2009.09941 [cs.CV].(2020-09-21).https://arxiv.org/abs/2009.09941v3.

        [2] 邵慧敏.營業(yè)執(zhí)照自動(dòng)識(shí)別技術(shù)的研究 [D].烏魯木齊:新疆農(nóng)業(yè)大學(xué),2020.

        [3] LIAO M H,WAN Z Y,Yao C,et al. Real-Time Scene Text Detection with Differentiable Binarization [J].Proceedings of the AAAI Conference on Artificial Intelligence,2020,34(7):11474-11481.

        [4] YU D L,Li X,ZHANG C Q,et al. Towards Accurate Scene Text Recognition With Semantic Reasoning Networks[C]//2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition(CVPR).Seattle:IEEE,2020.

        [5] LI W,CAO L B,ZHAO D Z,et al. CRNN:Integrating classification rules into neural network[C]//The 2013 International Joint Conference on Neural Networks(IJCNN).Dallas:IEEE,2013.

        作者簡介:仇建民(1988.06—),男,漢族,江蘇揚(yáng)州人,中級工程師,本科,研究方向:IT系統(tǒng)建設(shè)與運(yùn)維、大數(shù)據(jù)平臺(tái)、數(shù)據(jù)倉庫、AI開發(fā)與應(yīng)用(文本分類、圖像識(shí)別)等。

        收稿日期:2021-04-06

        猜你喜歡
        圖像識(shí)別
        基于Resnet-50的貓狗圖像識(shí)別
        電子制作(2019年16期)2019-09-27 09:34:50
        高速公路圖像識(shí)別技術(shù)應(yīng)用探討
        圖像識(shí)別在物聯(lián)網(wǎng)上的應(yīng)用
        電子制作(2018年19期)2018-11-14 02:37:04
        圖像識(shí)別在水質(zhì)檢測中的應(yīng)用
        電子制作(2018年14期)2018-08-21 01:38:16
        淺談模式識(shí)別在圖像識(shí)別中的應(yīng)用
        電子測試(2017年23期)2017-04-04 05:06:50
        基于多組合內(nèi)容的圖像識(shí)別機(jī)制
        日韩av中文字幕少妇精品| 真人直播 免费视频| 91精品国产综合成人| 免费无码AⅤ片在线观看| 久久综合亚洲鲁鲁五月天| 4455永久免费视频| 军人粗大的内捧猛烈进出视频| 日本视频中文字幕一区在线| 日本一区二区三区的免费视频观看| 极品美女调教喷水网站| 欧美国产综合欧美视频| 无码人妻丰满熟妇啪啪7774| 99综合精品久久| 日韩女优视频网站一区二区三区| 日本在线 | 中文| 亚洲 欧美 激情 小说 另类| 国产欧美亚洲另类第一页| 亚洲人成精品久久熟女| 又色又爽又黄的视频软件app| av天堂久久天堂av色综合| 国产性一交一乱一伦一色一情| 亚洲国产一区二区视频| 色多多性虎精品无码av| 久久这里只精品国产免费10| 久久国产香蕉一区精品天美| 亚洲一区亚洲二区视频在线| 女人被弄到高潮的免费视频| 亚洲综合色一区二区三区小说| 国产美女高潮流的白浆久久| 日韩精品一区二区在线天天狠天| 免费拍拍拍网站| 久久半精品国产99精品国产| 人妻熟女中文字幕av| 亚洲精品久久激情国产片| 欧美亚洲精品一区二区| 亚洲成片在线看一区二区| 亚洲黄片av在线播放| 亚洲免费网站观看视频| 美女超薄透明丝袜美腿| 日本午夜艺术一区二区| 最新中文字幕av无码不卡|